0

我是 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类有

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

对于这些字段验证,使用以下验证 xml 文件,目前只检查一个字段名称。验证文件的名称是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>

这是项目结构 在此处输入图像描述

请任何人让我知道我怎么能想出这个。提前致谢。

新添加:根据struts.xml,如果有错误,(验证说有问题),页面应该重定向到index.jsp,但是当字段'name'没有给出任何内容时,它仍然可以到 home.jsp 。

A Solution Found
我添加到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. 如何将其打印在我希望查看的位置(例如:表格底部)?

4

4 回答 4

2

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

于 2012-06-30T18:38:48.617 回答
0

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

于 2012-06-30T15:21:56.890 回答
0

正如上面所说,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"> -->

于 2012-06-30T18:23:08.530 回答
0

将参数验证值设为 'true; 在里面<s:form action="register" validate="true">

于 2012-07-02T05:44:49.740 回答