Struts2验证框架无法显示错误提示的解决方案

问题描述:

在教学过程中突然遇到使用struts2的验证框架时,当输入的内容不符合验证规则时,没有进入action(说明验证的拦截器生效了),但是在页面却没有显示错误提示信息,很郁闷调了很久终于发现问题…

部分代码:

index.jsp

public class ValidateAction extends ActionSupport{private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String execute() throws Exception {System.out.println(“进入action”);return super.execute();}}

ValidateAction.java

public class User implements Serializable{private String name;private String pwd;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}}

User.java

<!DOCTYPE validators PUBLIC”-//OpenSymphony Group//XWork Validator 1.0.2//EN””http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd”true请输入用户名

ValidateAction-validation.xml

DOCTYPE struts PUBLIC”-//Apache Software Foundation//DTD Struts Configuration 2.1//EN””http://struts.apache.org/dtds/struts-2.1.dtd”/index.jsp/validate.jsp

struts.xml

解决方案:

将struts.xml中result的type属性去掉,或使用默认的dispatcher方式.

原理在于验证框架会把错误信息注入到ValueStack的根对象中,而采用redirect重定向方式相当于用户又发起了新的请求,当然无法共享上次请求对应的ValueStack对象.

可以通过struts的debug标签看到这一过程:

,免备案空间,香港服务器租用,香港虚拟主机你的脸是为了呈现上帝赐给人类最贵重的礼物–微笑,一定要成为你工作最大的资产。

Struts2验证框架无法显示错误提示的解决方案

相关文章:

你感兴趣的文章:

标签云: