-
Struts2验证框架无法显示错误提示的解决规划
添加时间:2013-6-19 点击量:题目描述:
在教授教化过程中忽然碰到应用struts2的验证框架时,当输入的内容不合适验证规矩时,没有进入action(申明验证的阻碍器生效了),然则在页面却没有显示错误提示信息,很愁闷调了好久终于发明题目...
项目组代码:
<html>
<body>
<s:form action=Validate method=post >
<s:textfield label=用户名 name=user.name />
<s:textfield label=暗码 name=user.pwd/>
<s:submit value=提交 />
</s:form>
</body>
</html>
index.jsppublic 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.javapublic 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>
<validators>
<field name=user.name>
<field-validator type=requiredstring>
<param name=trim>true</param>
<message>请输入用户名</message>
</field-validator>
</field>
</validators>
ValidateAction-validation.xml<?xml version=1.0 encoding=UTF-8?>
<!DOCTYPE struts PUBLIC
-//Apache Software Foundation//DTD Struts Configuration 2.1//EN
http://struts.apache.org/dtds/struts-2.1.dtd>
<struts>
<package name=default extends=struts-default namespace=/>
<action name=Validate class=com.jb.cdjj.web.actions.ValidateAction>
<result>/index.jsp</result>
<result name=input type=redirect>/validate.jsp</result>
</action>
</package>
</struts>
struts.xml解决规划:
将struts.xml中result的type属性去掉,或应用默认的dispatcher体式格式.
道理在于验证框架会把错误信息注入到ValueStack的根对象中,而采取redirect重定向体式格式相当于用户又创议了新的恳求,当然无法共享前次恳求对应的ValueStack对象.
可以经由过程struts的debug标签看到这一过程:
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》