【问题标题】:Struts2 Validation Framework doesn't validate FieldsStruts2 验证框架不验证字段
【发布时间】:2012-06-30 14:57:42
【问题描述】:

我是 Struts2 的新手。我想将验证框架用于简单的“注册”表单。这是我的 JSP 页面表单元素;

    <s:form action="register">
            <s:textfield name="name" label="Name" />
            <s:textfield name="age" label="Age" />
            <s:textfield name="email" label="email"/>
            <s:submit value="Register" />
        </s:form>  
 validation error ? = <s:actionerror /><br/>
        ---Action Message--- <s:actionmessage/>

这里是struts2.xml文件;

    <!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
       <package name="default" extends="struts-default">        
        <action name="register"
                class="com.action.RegisterAction">
                <result name="success">home.jsp</result>    
                <result name="input">index.jsp</result>
                </action>     
       </package>
</struts>

RegisterAction 类有

  • 字符串名称;
  • int 年龄;
  • 字符串电子邮件;带有 getter 和 setter 的变量。而它的 execute() 只是返回 SUCCESS

对于这些字段验证,使用以下验证 xml 文件,目前只检查一个字段 name。验证文件的名称是RegisterAction-validation.xml

    <!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<!-- Author: Aash -->     
<validators>     
    <field name="name">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>name is required.. :) </message>
        </field-validator>
    </field>    
</validators>

这里是项目结构

请任何人告诉我我怎么能想出这个。提前致谢。

New Add:根据struts.xml,如果有错误,(验证说有问题),页面应该重定向到index.jsp ,但是当没有为字段“名称”提供任何内容时,它仍然会转到 home.jsp 。

找到了解决方案
我添加到validation.xml
!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
但是它显示在Form的顶部,我不知道为什么没有打印为actionError。如何将其打印在我想要查看的位置(例如:表单底部)?

【问题讨论】:

  • 您可能需要提供更多详细信息。考虑把你的项目放到 github 上让我们看看;没有太多的想法,它似乎应该工作。为了完整起见,它不会重定向到索引,而是会转发。

标签: java jakarta-ee struts2


【解决方案1】:

由于它是一个字段错误,因为您在 JSP 页面中放置了元素,所以消息接近字段 'name' 。如果你想打印它,你想要它在哪里,&lt;s:fielderror fieldName="name" /&gt;

【讨论】:

    【解决方案2】:

    我认为问题在于 xml 文件名。应该是RegisterAction-validation.xml

    【讨论】:

    • 我没有发现其他任何问题。您是否关闭了RegisterAction-validation.xml 中的&lt;validators&gt; 标签??我想这只是一个复制/粘贴错误,但以防万一......
    【解决方案3】:

    正如this 所说,DOCTYPE 应该在validation.xml 中。
    <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> -->

    【讨论】:

      【解决方案4】:

      Put 参数验证值 make 'true;在&lt;s:form action="register" validate="true"&gt;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多