我用Struts 2.0的输入效验框架对表单的输入项进行了的效验,配置代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!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="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>Username is required</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{6,20})]]></param>
<message>size of username should between 6-20</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>Password is required</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{6,20})]]></param>
<message>size of password should between 6-20</message>
</field-validator>
</field>
<field name="repassword">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>repassword is required</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{6,20})]]></param>
<message>size of repassword should between 6-20</message>
</field-validator>
<field-validator type="fieldexpression">
<param name="expression"><![CDATA[(repassword==password)]]></param>
<message>The repassword and the password is not the same</message>
</field-validator>
</field>
<field name="nickname">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>the nickname is require</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[([\u4e00-\u9fa5]{2,20})]]></param>
<message>The nickname should between 2-20</message>
</field-validator>
</field>
<field name="answer">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>answer is required</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[([\u4e00-\u9fa5]{5,50})]]></param>
<message>The answer should between 5-50</message>
</field-validator>
</field>
</validators>但是当效验失败返回input 视图的时候,之前输入的信息没有了,怎么能保留之前输入的信息的?
<?xml version="1.0" encoding="UTF-8"?>
<!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="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>Username is required</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{6,20})]]></param>
<message>size of username should between 6-20</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>Password is required</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{6,20})]]></param>
<message>size of password should between 6-20</message>
</field-validator>
</field>
<field name="repassword">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>repassword is required</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{6,20})]]></param>
<message>size of repassword should between 6-20</message>
</field-validator>
<field-validator type="fieldexpression">
<param name="expression"><![CDATA[(repassword==password)]]></param>
<message>The repassword and the password is not the same</message>
</field-validator>
</field>
<field name="nickname">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>the nickname is require</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[([\u4e00-\u9fa5]{2,20})]]></param>
<message>The nickname should between 2-20</message>
</field-validator>
</field>
<field name="answer">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>answer is required</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[([\u4e00-\u9fa5]{5,50})]]></param>
<message>The answer should between 5-50</message>
</field-validator>
</field>
</validators>但是当效验失败返回input 视图的时候,之前输入的信息没有了,怎么能保留之前输入的信息的?
如果是html的<input type="text".../> 之类的, 别玩两个 value="${action.xxxx}"你的struts.xml配置文件也发上来看看. package是不是继承至struts-default.
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <constant name="struts.configuration.xml.reload" value="true"/>
<constant name="struts.i18n.encoding" value="GBK" />
<package name="struts2" extends="struts-default">
<action name="register" class="registerAction" method="execute">
<result name="error">/error.jsp</result>
<result name="success">/success.jsp</result>
</action>
<action name="login" class="loginAction" method="execute">
<result name="error">/login.jsp</result>
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
同意你的看法 我也碰到过 struts做验证 确实不怎么好 但struts既然有这个验证 说明还是有用的