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.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
    >

    <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标签看到这一过程:


    我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
    分享到: