我是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 类有
对于这些字段验证,使用以下验证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>
这是项目结构
请任何人告诉我如何才能想出这个。提前致谢。
新添加:根据struts.xml,如果出现错误(验证说错了),页面应重定向到 index.jsp ,但是当字段'name'没有给出任何内容时,仍然会转到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
。我如何得到它打印在我想要查看的位置(例如:表格的底部)?
答案 0 :(得分:2)
由于它是一个字段错误,因为您已将元素放在JSP页面中,因此消息接近字段“name”。如果你想打印它,你希望它在哪里,<s:fielderror fieldName="name" />
答案 1 :(得分:0)
我认为问题是xml文件名。它应该是RegisterAction-validation.xml
答案 2 :(得分:0)
如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">
-->
答案 3 :(得分:0)
将参数验证值设为'true;在<s:form action="register" validate="true">