Struts验证器框架提供了许多通用的验证方法,以使验证工作更加轻松和可维护。 使用Struts验证器,您需要将验证函数声明为xml文件而不是ActionForm validate()方法,这可以使Struts验证更加标准化,可重用且重复代码更少。
下载此示例– Struts-Validator-Example.zip
使用Struts Validator框架
这是使用Struts Validator框架的快速指南。
1.验证程序插件
要使用Struts验证程序插件,您需要在struts-config.xml文件中包含“ ValidatorPlugIn ”类。
...
<plug-in className="org.apache.struts.validator.ValidatorPlugIn" >
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml, /WEB-INF/validator-user.xml"/>
</plug-in>
...
“ validator-rules.xml ”文件包含所有通用的验证器名称,您可以在Struts分发库中获取此文件(不要自己创建此文件)。 并且“ validator-user.xml”包含您所有的表单字段验证。
2.验证人表格
对于Form bean需要使用验证器框架,它必须扩展ValidatorForm而不是ActionForm 。
import org.apache.struts.validator.ValidatorForm;
public class UserForm extends ValidatorForm{
..
3.validator-user.xml
一个userForm bean,email属性,并将“ required”和“ email”验证器附加到email属性。 “必填”验证器将确保文件不为空,“电子邮件”验证器用于检查正确的电子邮件格式。 “必需”和“电子邮件”验证程序都在“ validator-rules.xml”文件中声明。
<form-validation>
<formset>
<form name="userForm">
<field property="email" depends="required,email">
<msg name="required" key="err.user.email.required" />
<msg name="email" key="err.user.email.invalid" />
</field>
</form>
</formset>
</form-validation>
Struts验证程序框架示例
了解Struts验证程序框架的最佳方法是创建一个简单的应用程序并逐步完成验证工作。 这是一个简单的用户注册表格,可使用Struts验证程序框架检查用户名,密码和电子邮件。
1.行动
动作类,仅转发成功请求。
UserAction.java
package com.mkyong.user.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class UserAction extends Action{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return mapping.findForward("success");
}
}
2.用户表格
UserForm扩展了ValidatorForm类。
UserForm.java
package com.mkyong.user.form;
import org.apache.struts.validator.ValidatorForm;
public class UserForm extends ValidatorForm{
String username;
String pwd;
String pwd2;
String email;
//getter and setter methods
}
3.属性文件
属性文件包含所有标签和错误消息。
user.properties
#user module label message
label.user.name = Name
label.user.username = UserName
label.user.pwd = Password
label.user.pwd2 = Confirm Password
label.user.email = Email
label.user.button.submit = Submit
#Error message
err.user.username.required = Username is required.<br/>
err.user.username.length = Username length should be between {0} and {1}.<br/>
err.user.username.invalid =
Username is invalid , it should be a-z, A-Z, 0-9, dash "-" or underscore "_".<br/>
err.user.pwd.required = Password is required.<br/>
err.user.pwd.length = Password length should be between {0} and {1}.<br/>
err.user.pwd.invalid = Password is invalid , it should be a-z, A-Z, 0-9.<br/>
err.user.pwd2.notmatch = Confirm password is not match.<br/>
err.user.email.required = Email is required.<br/>
err.user.email.invalid = Email address is invalid.<br/>
4.查看页面
一个简单的jsp页面创建全部需要文本字段,而一个简单的感谢页面
RegisterUser.jsp
Struts - Validator Example
RegisterUser.jsp
User Registeration Form
ThankYou.jsp
Struts - Validator Example
Thanks you for the registration
5. Struts配置
配置动作,表单映射并注册“ ValidatorPlugIn”插件。
struts-connfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="userForm" type="com.mkyong.user.form.UserForm" />
</form-beans>
<action-mappings>
<action
path="/Register"
type="com.mkyong.user.action.UserAction"
name="userForm"
input="/pages/RegisterUser.jsp"
>
<forward name="success" path="/pages/ThanksYou.jsp"/>
</action>
<action
path="/RegisterUserPage"
type="org.apache.struts.actions.ForwardAction"
parameter="/pages/RegisterUser.jsp"/>
</action-mappings>
<message-resources
parameter="com.mkyong.user.properties.user" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn" >
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml, /WEB-INF/validator-user.xml"/>
</plug-in>
</struts-config>
6.validator-user.xml
为userForm的用户名,密码和电子邮件属性定义验证器。
验证程序-user.xml
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation
//DTD Commons Validator Rules Configuration 1.3.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">
<form-validation>
<formset>
<form name="userForm">
<field property="username" depends="required,maxlength,minlength,mask">
<msg name="required" key="err.user.username.required" />
<msg name="maxlength" key="err.user.username.length" />
<msg name="minlength" key="err.user.username.length" />
<msg name="mask" key="err.user.username.invalid" />
<arg name="maxlength" key="${var:minlength}" position="0" resource="false"/>
<arg name="maxlength" key="${var:maxlength}" position="1" resource="false"/>
<arg name="minlength" key="${var:minlength}" position="0" resource="false"/>
<arg name="minlength" key="${var:maxlength}" position="1" resource="false"/>
<var>
<var-name>minlength</var-name>
<var-value>3</var-value>
</var>
<var>
<var-name>maxlength</var-name>
<var-value>15</var-value>
</var>
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z0-9-_]*$</var-value>
</var>
</field>
<field property="pwd" depends="required,maxlength,minlength,mask">
<msg name="required" key="err.user.pwd.required" />
<msg name="maxlength" key="err.user.pwd.length" />
<msg name="minlength" key="err.user.pwd.length" />
<msg name="mask" key="err.user.pwd.invalid" />
<arg name="maxlength" key="${var:minlength}" position="0" resource="false"/>
<arg name="maxlength" key="${var:maxlength}" position="1" resource="false"/>
<arg name="minlength" key="${var:minlength}" position="0" resource="false"/>
<arg name="minlength" key="${var:maxlength}" position="1" resource="false"/>
<var>
<var-name>minlength</var-name>
<var-value>7</var-value>
</var>
<var>
<var-name>maxlength</var-name>
<var-value>15</var-value>
</var>
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z0-9]*$</var-value>
</var>
</field>
<field property="pwd2" depends="validwhen">
<msg name="validwhen" key="err.user.pwd2.notmatch" />
<var>
<var-name>test</var-name>
<var-value>
(pwd == *this*)
</var-value>
</var>
</field>
<field property="email" depends="required,email">
<msg name="required" key="err.user.email.required" />
<msg name="email" key="err.user.email.invalid" />
</field>
</form>
</formset>
</form-validation>
7.演示
http:// localhost:8080 / StrutsExample / RegisterUserPage.do
http:// localhost:8080 / StrutsExample / Register.do
验证码具有足够的描述性,以了解其工作原理,如果您想了解详细信息以及其他可用的验证器,请访问下面的参考网站。
参考
Struts验证程序文档– http://struts.apache.org/1.2.4/userGuide/dev_validator.html
翻译自: https://mkyong.com/struts/struts-validator-framework-example/