validation.xml的配置
来源:互联网 发布:java 动态执行方法 编辑:程序博客网 时间:2024/05/21 08:43
validation.xml文件是Validator框架需要的另一个配置文件。该文件是特定于应用程序的,由开发人员自己来创建。它描述了那些具体应用中的ActionForm所使用的validator-rules.xml文件中的有效性验证规则。通过ActionForm在validation.xml文件中配置所需要的验证规则,开发人员就不必将验证逻辑硬编码放在ActionForm的内部。一个简单的validation.xml文件如例程5-7所示。
例程5-7 validation.xml实例
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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="loginActionForm"><field property="username"depends="required"><arg0 key="prompt.username"/></field><field property="password"depends="required, minlength,maxlength"><arg0 key="prompt.password"/><arg1 key="${var:minlength}" name="minlength"resource="false"/><arg2 key="${var:maxlength}" name="maxlength"resource="false"/><var><var-name>maxlength</var-name><var-value>16</var-value></var><var><var-name>minlength</var-name><var-value>3</var-value></var></field></form></formset></form-validation>
validation.xml文件中包含form-validation、global、formset、form、field、msg、arg、var等元素。下面对它们一一进行介绍。
1.form-validation元素
<form-validation>元素是validation.xml文件的根元素。它包含2个子元素,即<global>元素和<formset>元素,其在dtd中的定义如下:
<!ELEMENT form-validation (global*, formset*)>
2.global元素
global元素允许开发人员配置可以用在文件其他部分中的constant元素,也就是全局常量。这与在Java文件中定义一个常量,然后在类中使用该常量的方式相似。constant元素以名字和值的方式出现。例如:
<form-validation><global><constant><constant-name>zip</constant-name><constant-value>^\d{5}\d*$</constant-value> <!--常量值,这里是一个正则表达式--></constant><global>
<formset><form name="registerForm"><field property ="zipPostal" depends="required, mask"><arg0 key="registerForm.zippostal.displayname"/><var><var-name>mask</var-name><var-value>${zip}</var-value></var></field></form></formset><form-validation>
在以上代码中,在<global>元素中定义了一个常量zip,在<formset>元素中可以通过${constant-name}的形式,如${zip},来引用这个常量。
3.formset元素
<formset>元素包含两个子元素,即<constant>元素和<form>元素。<constant>元素可以出现零次或多次,<form>元素至少出现一次。这里的<constant>元素中定义的constant常量是局部常量,只能在当前<formset>元素内引用。
<formset>元素有2个属性,即language和country,它们用于国际化。
4.form元素
form元素定义了一套将要进行有效性验证的域(field),其name属性指定对应表单的名字,并且name属性与Struts配置文件中的form-bean元素的name属性一致。
form元素可以包含多个field元素。
5.field元素
一个field元素对应于一个表单中需要验证的字段。它的属性如表5-3所示。
表5-3 field元素的属性
属 性
描 述
property
将要进行有效性验证的ActionForm的属性名
depends
指定字段的验证规则,多个规则之间以逗号分开
page
如果对应的ActionForm是一个跨页表单,可能包括一个page属性与表单中的page属性相对应,用户指定该字段应该在哪一页被处理
indexedListProperty
后循环列表,执行该域的有效性验证
6.msg元素
field元素的msg子元素指定验证规则对应的消息文本。该消息文本将替代默认的消息文本,即validator-rules.xml中定义的消息文本。msg元素的值必须是应用程序消息资源包中的某个消息资源的关键字。例如:
<field property="lastName" depends="required, mask" page="1"><msg name="mask" key="registerForm.lastname.maskmsg"/><arg0 key="registerForm.lastname.displayname"/><var><var-name>mask</var-name><var-value>^[a-zA-Z]*$</var-value></var></field>
当lastName字段有效性验证失败时,显示的错误消息是消息资源中registerForm. lastname.masking键所指的消息文本。
msg元素的属性如表5-4所示。
表5-4 msg元素的属性
属 性
描 述
key
指定绑定的消息资源中的消息文本或直接指定消息文本
name
指定验证规则的名字
bundle
指定绑定的消息资源的名称
resource
当该属性值为true时,表示使用来自消息资源的消息文本;当该属性值为false时,表示直接在key属性中设置消息文本。默认值为true。
7.arg元素
arg元素可以用来向消息文本中传递参数。它有name、key、resource和position等几个属性,name、key、resource属性的含义与msg元素的属性相当。position属性用来指定消息文本中的替换位置。
例如,例程5-8是关于minlength验证规则的配置文件。
例程5-8 minlength验证规则的配置文件
<field property="password"depends="required, minlength"><arg0 key="prompt.password" /><arg1 key="${var:minlength}" name="minlength"resource="false" position="1"/><var><var-name>minlength</var-name><var-value>3</var-value></var></field>
在validator-rules.xml文件中,minlength验证规则的默认消息文本是:
{0} can not be less than {1} characters.
在例程5-8中,position属性的值为1的arg元素定义中,name属性的值为minlength,表示仅适用于minlength验证规则,resource属性的值为false,表示可直接在key属性中设定消息文本,即key属性的值为${var:minlength},在这里是3。把以上代码中两个arg的key值分别放入minlength验证规则的默认消息文本中的相应位置,最后返回的消息文本应该是:
password can not be less than 3 characters.
8.var元素
var元素用来向验证规则传递参数。例如在例程5-7中,定义了maxlength和minlength两个参数,分别传递给maxlength和minlength验证规则。
arg元素也可以访问var元素,语法形式是${var:var-name}。例如,在例程5-7中的${var:maxlength}和${var:minlength}的使用。
9.<html:messages>
Action 中 :
ActionMessages message = new ActionMessages();
message.add(" 消息句柄 ",new ActionMessage(" 资源文件中 Key 值 ",String 类型描述信息 ));
this.addMessages(request,message);
return ActionForward;
JSP 页面中 :
<html:messages id=" 指定使用消息的标识 " property=" 消息句柄 " message="true|false">
<bean:write name=" 以上所指 ID 标识 "/>
</html:messages>
例如:
Action方法中:
saveMessage(request,"页面要显示的消息");
Action的调用的方法,可以写真Action实现类的父类 BaseDispatchAction中:
public ActionMessages saveMessage(HttpServletRequest request, String key) {
ActionMessages messages = new ActionMessages();
return saveMessage(messages, request, key);
}
protected ActionMessages saveMessage(ActionMessages messages,
HttpServletRequest request, String key) {
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(key));
saveMessages(request, messages);
return messages;
}
页面:
<html:messages id="msg" message="true"><bean:write name="msg"/></html:messages>
<html:errors>
Action 中 :
ActionMessages message = new ActionMessages();
message.add(" 消息句柄 ",new ActionMessage(" 资源文件中 Key 值 ",String 类型描述信息 ));
this.saveErrors(request,message);
return ActionForward;
JSP 页面中 :
<html:errors property=" 消息句柄 "/>
如果Action中这样设定(false),页面的提示信息将不从资源文件里读取:
ActionMessages message = new ActionMessages();
message.add("消息句柄",new ActionMessage("String类型描述信息));",false));
this.saveErrors(request,message);
return ActionForward;
JSP页面:
<html:errors/>或<html:errors property="消息句柄"/>
10.
关于message-resources 配置中parameter的值
- validation.xml的配置
- validation.xml的配置
- Struts2 的validation.xml验证配置
- struts validation.xml 配置
- struts1.2的validation.xml验证文件的配置总结
- [struts2]struts2的validation.xml配置不起作用的常见原因
- 【Struts1.2总结系列】validation.xml验证文件的配置
- Struts之validation.xml验证文件的配置
- 【Struts1.2总结系列】validation.xml验证文件的配置
- 【Struts1.2总结系列】validation.xml验证文件的配置
- 解决struts2中validation.xml配置无效的问题
- struts2 下配置validation.xml出现的异常
- Struts1.2中validation.xml验证文件的配置
- Struts2配置好的LoginAction-Validation.xml不管用
- springmvc4的validation配置
- validation.xml
- validation.xml
- xml validation
- Shell 的赋值命令
- PYTHON模块之time
- 如何停止McAFee的“按访问扫描程序”
- jsp 与 javascript 变量相互调用方法
- Android学习笔记 - 布局篇
- validation.xml的配置
- ibatis sqlMap.xml 文件 like 查询的三种方案
- WCE+ARM+TCPMP VS2005之旅:ASM编译添加规则的方法
- 开这个小博客,学习编程的一个记录吧
- makefile 中 $@ $^ %< 使用
- 抓取sybase中进程正在执行的sql脚本
- Hadoop HDFS源码学习笔记(三)
- MinGW简介
- 网秦你先修复下自己的bug先啊!!