在网页中的资源信息过于丰富,如果用户在填写表单时不按照要求的数据类型输入,就会导致页面异常。如:年龄输入框只能输入整数,而用户输入了字母,页面就应该提示出数据类型不符合。struts2提供了自带的异常处理。
示例:
注册页面:index.jsp:
<h2>测试struts2添加单个信息</h2> <s:form action="UserExceptionAction!test.action" method="post"> <s:textfield name="userinfo.uname" label="姓名"></s:textfield> <s:textfield name="userinfo.age" label="年龄"></s:textfield> <s:password name="userinfo.upass" label="密码"></s:password> <s:textfield name="userinfo.birthday" id="txtBeginDate" label="生日"></s:textfield> <s:submit value="注册"></s:submit> </s:form> action类:UserExceptionAction.java: package com.web.action; import com.opensymphony.xwork2.ActionSupport; import com.web.entity.User; @SuppressWarnings("serial") public class UserExceptionAction extends ActionSupport { private User userinfo; public User getUserinfo() { return userinfo; } public void setUserinfo(User userinfo) { this.userinfo = userinfo; } public String test() { return SUCCESS; } } 实体类:User.java: package com.web.entity; import java.util.Date; public class User { private String uname; private String upass; private int age; private Date birthday; // set,get方法省略...... } 异常配置文件:UserExceptionAction.properties:invalid.fieldvalue.userinfo.age=\u7528\u6237\u5E74\u9F84\u5FC5\u987B\u662F\u6574\u6570
成功界面:succes.jsp:
<body> <h2>添加单个信息</h2> 姓名:<s:property value="userinfo.uname"/><br> 密码:<s:property value="userinfo.upass"/><br> 年龄:<s:property value="userinfo.age"/><br> 生日:<s:date name="userinfo.birthday" format="yyyy年MM月dd日"/><br> </body> struts.xml: <struts> <constant name="struts.devMode" value="true"></constant> <!-- 配置包元素 --> <package name="default" extends="struts-default" namespace="/"> <action name="UserExceptionAction" class="com.web.action.UserExceptionAction"> <result name="success">/success.jsp</result> <result name="input">/index.jsp</result> </action> </package> </struts> 注意: 异常配置文件:UserExceptionAction.properties的名称必须和action类的名称一致并且在一个包下面; invalid.fieldvalue.userinfo.age中的userinfo是action里面的属性名称,age是实体类里面的属性名称。测试效果:
