validator-rules.xml验证框架使用
?要想用到这个 xml 首先 我们要进入 此? xml 复制 其中的 plugin? 配置到 struts - config .xml 里面
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
?<set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/>
</plug-in>
?
?
?然后我们开始 写我们的 Userform? 此form 非彼form? 而是要继承至 ValidatorForm
?要不 就不能使用到 validate.rules 的框架
?
----------------------------------------我写的Userform------------------------------------------------------
package com.form; import org.apache.struts.validator.ValidatorForm; public class Userform extends ValidatorForm{ private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
?
?
?
?
由于 我们配置完struts-config 里的plugIn 之后 里面需要一个 validation.xml 于是我们要新建个 xml
? 内容 如下
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"> <form-validation> <formset> <form name="Userform"> <field property="username" depends="required"></field> <field property="password" depends="required"></field> </form> </formset> </form-validation>
?
?
?
??? *强调? property 是 验证的对象? depends 是使用的 方法.. required 是验证空..validator.rules里面还有别的一些方法? 我们要注意
---------------------------------------------Action--------------------
?然后我们 写 Action? 这里 我的Action 是这样子
public class Useraction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("fuck"); return new ActionForward("/index.jsp"); } }
?
?
?
?
Action里就随便写了点东西? 让他能 提交到这个地方就行(我们主要是进行验证)
Form 和 Action 都配置完后? 你也应该 知道我们接下来做什么 .. 对.. 就是配置struts-config.xml
配置 <form-bean name="Userform" type="com.form.Userform"/>
<action path="/User" type="com.action.Useraction" name="Userform" input="/inde.jsp" scope="request" validate="true"></action>
?也就是正常配置 没别的什么? 开启验证 为主要
然后我们就可以在 页面中进行插入 <html:errors>标签
如下:
<body> <form action="User.do" method="post"> <input type="text" name="username"/><html:errors property="username"/><br/> <input type="password" name="password"/><html:errors property="password"/><br/> <input type="submit"/> </form> </body>
?
?
?
?? msg="errors.required" 这是validator.rules.xml 里面 提供的 返回 错误信息..
所以我们要在 properties文件里 进行配置
?????????????????????????????????? errors.required=username is null
我们没分类? 所以 username 和 password 会同时都出现 username is null。。。。。。。。。。。。。。。
----------------------处理错误信息一致问题--------------------------------------------
在properties文件里 使用变量 定义 errors.required ={0} is null;
然后分别定义两个? user.username=username??????? 和??? user.password=password
然后 在 validation.xml里
?
<form-validation> <formset> <form name="Userform"> <field property="username" depends="required"> **<arg0 key="user.username"/> </field> <field property="password" depends="required"> **<arg0 key="user.password"/> </field> </form> </formset>
?
?
?
?--------------------------------------------Properties文件---------------------------
errors.required={0} is null user.username=username user.password=password
?
?
?------------------------------------------------------
如果想写多个判断的话 就在 validation.xml
里的 <field property="password" depends="required"> required后面直接家,方法名
例如???? depends="required,minilegth">
?????? 设置 minilength长度
<var> <var-name>minilength</var-name> <var-value>5</var-value> </var> ?
?
-------------------------------------------------------------------
Properties 文件 写
?? errors.required={0} is required.
?? errors.minlength={0} can not be less than {1} characters.
?
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"> <form-validation> <global> <constant> <constant-name>length</constant-name> //全局变量名 <constant-value>5</constant-value> //全局变量值 </constant> </global> <formset> // 对哪个表 进行验证 <form name="Userform"> //depends 是需要什么类型的 验证 <field property="username" depends="required"> <arg0 key="username" resource="false"/> </field> <field property="password" depends="required,minilength"> <arg0 name="required" key="user.password" /> //resource 是指是否从properties中获取value // name是指 对当前哪个验证 使用arg0 变量操作 不写则表示所有 <arg0 name="minilength" key="user.password" resource="false"/> <arg1 key="${var:minilength}" resource="false"/> //${var:minilength}是获取下面(全局) 获取的value值 <var> //参数名 <var-name>minilength</var-name> //{var:length} 是获取 全局变量值 //当没有全局变量的时候可以直接写 数! <var-value>${var:length}</var-value> </var> </field> </form> </formset> </form-validation>
?
?
?