先看struts-config.xml
- <action path="/login" type="com.jialin.LoginAction" name="userForm"
- scope="request" validate="true" attribute="uf">
- <forward name="success" path="/LoginSuccess.jsp" />
- <forward name="fail" path="/LoginFail.jsp" />
- </action>
<action path="/login" type="com.jialin.LoginAction" name="userForm"
scope="request" validate="true" attribute="uf">
<forward name="success" path="/LoginSuccess.jsp" />
<forward name="fail" path="/LoginFail.jsp" />
</action>
其中 validate和attribut有什么用?
validate,是否验证表单数据。
我们在ActionForm中,重写父类的validate方法,当从表单收集完数据放到ActionForm后,如果配置文件中validate=true,将调用该方法,这里我们可以做一些数据验证。
- @Override
- public ActionErrors validate(ActionMapping mapping,
- HttpServletRequest request) {
- System.out.println("-------ActionForm.validate()从表单收集完数据放到ActionForm后做验证--------");
- return super.validate(mapping, request);
- }
@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
System.out.println("-------ActionForm.validate()从表单收集完数据放到ActionForm后做验证--------");
return super.validate(mapping, request);
}
当然,如果系统安全性各方面要求不高,我们一般的验证都是放在javascript里的。
attribute
如果我们配置了attribute属性,我们在jsp中要获取actionform中的值得时候,form名就变为attribute设置的值。而不再是form-bean节点下 name属性的值。
例如
- <struts-config>
- <!-- set ActionForm info-->
- <form-beans>
- <form-bean name="userForm" type="com.jialin.UserActionForm" />
- </form-beans>
- <action-mappings>
- <!-- Set path,action,actionform,scope,forward info -->
- <action path="/login" type="com.jialin.LoginAction" name="userForm"
- scope="request" validate="true" attribute="uf">
- <forward name="success" path="/LoginSuccess.jsp" />
- <forward name="fail" path="/LoginFail.jsp" />
- </action>
- </action-mappings>
- </struts-config>
<struts-config>
<!-- set ActionForm info-->
<form-beans>
<form-bean name="userForm" type="com.jialin.UserActionForm" />
</form-beans>
<action-mappings>
<!-- Set path,action,actionform,scope,forward info -->
<action path="/login" type="com.jialin.LoginAction" name="userForm"
scope="request" validate="true" attribute="uf">
<forward name="success" path="/LoginSuccess.jsp" />
<forward name="fail" path="/LoginFail.jsp" />
</action>
</action-mappings>
</struts-config>
如果我们要用el表达式取表单的值,不能使用${userForm.name},而是${uf.name}
ActionForm中还可以重写父类的reset的方法,可以在把收集表单数据往ActionForm中放之前做一些处理
- @Override
- public void reset(ActionMapping mapping, HttpServletRequest request) {
- System.out.println("------------ActionForm.reset()<SPAN style="FONT-FAMILY: Calibri">可以</SPAN><SPAN style="FONT-FAMILY: 宋体" lang=zh-CN>在把收集表单数据往</SPAN><SPAN style="FONT-FAMILY: Calibri" lang=en-US>ActionForm</SPAN><SPAN style="FONT-FAMILY: 宋体" lang=zh-CN>中放之前做一些处理</SPAN>-----------");
- }