Struts2在JSP页面中显示错误信息和提示信息的方法主要有以下四种。
注意:以下四种方法均需要使Action类继承ActionSupport类。
一、域级错误信息
①重写Action中的validate()方法或编写validateXxx()方法,添加域级错误信息:
public void validate() {
String account = loginUser.getAccount();
String pwd = loginUser.getPassword();
if (account == null || account.equals("")) {
this.addFieldError("loginUser.account", "请输入您的用户名!");//添加域级错误信息
}
if (pwd == null || pwd.equals("")) {
this.addFieldError("loginUser.password", "请输入您的密码!");//添加域级错误信息
}
}
②在struts.xml中配置“input”的result:
/login.jsp
数据校验出错时,返回login.jsp页面。
此时在JSP 页面中使用Struts2 标签生成的表单,校验出错时能将域级别的错误信息自动显示到表单元素处。如下图所示:
也可以在JSP页面中使用集中显示域级错误信息。效果如下图所示:
二、Action级错误信息和提示信息
①在执行方法中添加Action级错误信息和提示信息:
public String login() {
UserService userServ = new UserService();
if (userServ.login(loginUser)) {
this.addActionMessage("登录成功!");
return "success";
}
else {
this.addActionError("用户名或密码输入错误,请重新输入!");
return "fail";
}
}
②在JSP页面中使用和标签输出错误信息和提示信息。
效果如下图所示:
三、校验器
创建校验规则文件,配置校验信息,一个可能的注册模块的校验规则文件如下:
/p>
"-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
true
loginUser.password==loginUser.repassword
两次密码输入不一致!
四、struts2内置类型转换器
当输入的数据不合法时,内置类型转换器会自动给出提示。例如,日期类型的数据不合法:
如需修改默认的类型转换校验信息,则要在Action 类的包中声明名为“Action类名.properties”的局部属性文件。
以上例子,在UserAction类的包中创建名为“UserAction.properties”的局部属性文件,以键值对的形式对校验信息进行修改:
invalid.fieldvalue.loginUser.birthday=生日必须是日期,并符合“yyyy-mm-dd”格式
其中invalid.fieldvalue 不能随意修改,loginUser.birthday 是请求参数域名,应根据实际需要进行修改。
为避免乱码,还需对UserAction.properties文件进行转码。
转码后的UserAction.properties文件:
invalid.fieldvalue.loginUser.birthday=\u751f\u65e5\u5fc5\u987b\u662f\u65e5\u671f\uff0c\u5e76\u7b26\u5408\u201cyyyy-mm-dd\u201d\u683c\u5f0f
修改后的效果如下图所示: