`

Struts分步表单提交

阅读更多

如果需要提交的表单内容比较多,一个JSP页面不够用,就需要多个表单依次提交,最后一起汇总给
ActionServlet处理

JSP1页面(其中hidden字段很重要,表示是第一个提交页面)
<html>
<head>
<title>jsp1</title>
</head>
<bodybgcolor="#ffffff">
<html:formaction="/insertAction.do">
<html:hiddenproperty="page"value="1"/>
name:
<html:textproperty="name"/>
pass:
<html:textproperty="password"/>
<html:submit>submit
</html:submit>
</html:form>
</body>
</html>

JSP2页面

<html>
<head>
<title>jsp2</title>
</head>
<bodybgcolor="#ffffff">
<html:formaction="/insertAction.do">
<html:hiddenproperty="page"value="2"/>
city:
<html:textproperty="city"/>
<html:submit>submit
</html:submit>
</html:form>
</body>
</html>

为两个页面建立共同的ActionForm,注意,scope要为session

publicclassInsertFormextendsActionForm...{
privateStringname=null;
privateStringpassword=null;
privateStringcity=null;
privateStringpage=null;
publicActionErrorsvalidate(ActionMappingactionMapping,
HttpServletRequest
httpServletRequest)
...{

ActionErrorserrors
=newActionErrors();
intnumpage=0;
try...{
numpage
=newInteger(page).intValue();
}
catch(Exceptionex)...{
}

if(numpage==1)...{
if((name==null)||(name.length()<1))...{
errors.add(
"name",newActionMessage("123"));
}

if((password==null)||(password.length()<1))...{
errors.add(
"password",newActionMessage("123"));
}

}

if(numpage==2)...{
if((city==null)||(city.length()<1))...{
errors.add(
"city",newActionMessage("123"));
}

}

returnerrors;
}

publicvoidreset(ActionMappingactionMapping,
HttpServletRequestservletRequest)
...{
intnumpage=0;
try...{
numpage
=newInteger(servletRequest.getParameter
(
"page")).intValue();
}
catch(Exceptionex)...{
}

if(numpage==1)...{
name
=null;
password
=null;
}

if(numpage==2)...{
city
=null;
}

}

publicStringgetCity()...{
returncity;
}

publicStringgetName()...{
returnname;
}

publicStringgetPage()...{
returnpage;
}

publicStringgetPassword()...{
returnpassword;
}

publicvoidsetPassword(Stringpassword)...{
this.password=password;
}

publicvoidsetPage(Stringpage)...{
this.page=page;
}

publicvoidsetName(Stringname)...{
this.name=name;
}

publicvoidsetCity(Stringcity)...{
this.city=city;
}

}


以上是两个html表单都对应I"nsertForm,在创建InsertForm时有以下几点需要注意
(1)提供html表单的隐藏字段page对应的page属性
(2)在reset方法中,只把和当前正在处理的表单相关的属性恢复为默认值
(3)在validate中,仅对和当前表单相关的属性进行验证
Struts-config.xml内容
<struts-config>
<form-beans>
<form-beanname="insertForm"type="untitled2.InsertForm"/>
</form-beans>
<action-mappings>
<actioninput="/jsp1.jsp"name="insertForm"
       parameter
="/jsp2.jsp"path="/insertAction"
       scope
="session"
       type
="org.apache.struts.actions.ForwardAction"
       validate
="true"/>
<actioninput="/jsp2.jsp"name="insertForm"
       path
="/insertAction2"scope="session"
       type
="untitled2.InsertAction2"validate="true"/>
</action-mappings>
<message-resourcesparameter="ApplicationResources"/>
</struts-config>

JSP1页面的action为/insertAction.do
JSP2页面的action为/insertAction2.do
分享到:
评论

相关推荐

    struts1.2 from表单提交包含list的对象

    在Struts1.2中处理表单提交,特别是当表单数据包含列表对象时,需要理解一些核心概念和技术。这篇博客文章可能详细探讨了如何在Struts1.2中处理这类情况。 首先,让我们来了解Struts1.2中的表单提交流程。当用户在...

    struts2表单提交

    根据提供的文件信息,本文将详细解释“Struts2表单提交”中涉及到的关键知识点,包括如何在Java程序中获取MySQL数据库连接(地址、密码、权限)的过程。 ### Struts2框架简介 Struts2是Apache基金会下的一个开源...

    Struts2解决表单重复提交

    对于第二种原因,即提交表单后刷新浏览器页面导致的重复提交,Struts2框架允许开发者通过配置结果视图的跳转方式来解决。默认情况下,Struts2使用的是dispatcher类型的forward跳转。为了避免刷新页面导致的重复提交...

    Struts表单重复提交问题

    在处理用户表单提交时,Struts框架可能会遇到一个常见的问题,即表单重复提交。这种情况通常发生在用户点击提交按钮后,由于网络延迟或其他原因导致请求被多次发送,从而可能对服务器端造成多次数据插入或更新,导致...

    struts的表单验证

    当用户提交表单时,框架会自动调用这些规则进行验证。 验证规则可以包括但不限于以下几种: - 必填字段检查 - 长度限制 - 数据类型检查(如整数、日期、邮箱地址等) - 自定义逻辑验证 如果验证失败,Struts...

    Struts2表单标签使用范例

    在处理表单提交时,Struts2的`&lt;s:form&gt;`标签起着关键作用。它会自动将表单数据绑定到Action类的属性,并且提供了一些有用的功能,如表单验证、主题样式和URL映射等。一个基本的`&lt;s:form&gt;`标签示例如下: ```jsp ...

    Struts2 表单 重复提交

    - 当用户提交表单时,服务器会在Action中生成一个唯一的token,并将其保存在session中,同时将该token作为隐藏字段回显到表单。 - 用户再次提交表单时,`TokenInterceptor`会检查session中的token是否与请求参数中...

    struts2 表单标签的使用

    在Struts2中,表单标签是用于构建用户界面的重要组件,它们帮助开发者创建交互式和动态的网页。这篇博客将深入探讨Struts2中的表单标签及其使用方法。 首先,我们需要理解Struts2表单标签的基本结构。通常,一个...

    struts2 防止表单重复提交的例子

    1. **表单重复提交问题**:当用户在提交表单时,由于网络延迟或用户误操作,可能会导致同一个表单被多次提交。例如,在购物网站上,用户可能因点击按钮太快而无意中购买了多份商品。 2. **Struts2框架**:Struts2是...

    struts2批量提交数据

    4. **处理请求**:当用户提交表单后,Struts2会自动将所有列出的DataModel对象绑定到Action类的dataList属性。在execute方法中,我们可以遍历这个list,并调用DAO或Service层方法将数据保存到数据库。 ```java for ...

    struts中多行提交问题

    为了实现在Struts框架下多行数据的动态添加与提交,我们可以利用JavaScript来动态生成表单元素。具体来说,就是通过JavaScript函数在用户界面上动态添加新的表单行,每一行包含多个输入框,用于收集不同的数据字段。...

    struts2利用token防止表单重复提交(源代码)

    struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...

    Struts2表单数据获取项目

    当用户提交表单后,Struts2会调用匹配的Action类的`execute()`方法,此时,`name`和`email`属性已经被填充了表单数据。你可以在这里进行数据验证、业务处理等操作。 至于结果页面,Struts2支持JSP、FreeMarker、...

    关于struts表单验证

    当用户提交表单时,Struts会自动将表单数据填充到ActionForm Bean的相应属性中,以便在控制层进行处理。 表单验证主要通过覆盖ActionForm的`validate()`方法来实现。这个方法会在用户提交表单后,Action类执行之前...

    struts2防止表单重复提交--重定向

    首先,理解表单重复提交的场景:用户在提交表单后,由于网络延迟或其他原因,可能会无意中多次点击提交按钮。如果服务器没有处理这些重复请求,那么相同的数据可能会被多次插入数据库,导致错误。 Struts2的解决...

    整合了struts2 jquery的formValidator表单验证的页面代码

    在提交事件处理函数中,可以再次调用formValidator的validate方法确保数据有效,然后使用Ajax提交表单,这样可以实现无刷新的用户体验。 6. **Struts2 Action处理**:在后台,Struts2 Action会接收到Ajax请求,对...

    struts动态表单实例

    在提供的压缩包文件"Struts5.0"中,可能包含了Struts的示例代码、配置文件和其他相关资源,你可以通过这些资源深入了解和学习如何在实际项目中运用Struts动态表单。通过实践这些实例,你可以更好地理解Struts动态...

    Struts2防止重复提交解决方案

    3. **验证令牌**:当用户提交表单时,`token`拦截器会检查请求参数中的令牌值与Session中的令牌值是否匹配。如果匹配,拦截器会清除Session中的令牌并继续执行Action;如果不匹配,表示可能有重复提交,Action将返回...

    用struts框架实现表单提交数据到数据库

    - 运行项目,通过浏览器提交表单,查看数据是否成功保存到数据库。 这个小项目不仅展示了Struts2处理表单提交的基本流程,还涉及了数据库操作、数据验证和MVC模式的运用。理解并掌握这些步骤,将有助于你在面试中...

Global site tag (gtag.js) - Google Analytics