1. validation.xml 中的Resourse属性
------------------------------------------------------------------------------
<field property="username" depends="maxlength">
<arg0 name="maxlength" key="${var:maxlength}" resource="false" />
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
</field>
------------------------------------------------------------------------------
来,我们将它支解掉。:) 好象没有什么好说的。很简单。这是某个form下的一个properties的标准写法。其中我们要重视一下这句话: <arg0 name="maxlength" key="${var:maxlength}" resource="false" /> , resource属性指的是:是从资源文件里面读key的值吗?
if (resource == "false") {
请取当前定义的变量的值。[因为为false的时候,因为得必须得给个值来组装错误信息,因为此时我们不会到消息资源文件里提取值]
} else if (resource == "true) {
请到资源文件里提取用来组装错误消息的值.
}
你会问:如果我不指定resourse的值怎么样?默认是true,即:默认下它会去读properties文件里面的值。 (这似乎与java的boolean的默认是false有点违背),如果我没有配呢?那么是null.
当然我也做了一个实验证明了这点:
properties file tips
------------------------------------------------------------------------------
errors.maxlength = The length of the password can not surpass {0}
------------------------------------------------------------------------------
validation.xml tips :
------------------------------------------------------------------------------
<field property="username" depends="maxlength">
<arg0 name="maxlength" key="${var:maxlength}" resource="false" />
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
</field>
------------------------------------------------------------------------------
如果username的长度超过10的话,那么打印的是:The length of the password can not surpass 10
resouse属性改成true,
properties file tips
------------------------------------------------------------------------------
errors.maxlength = The length of the password can not surpass {0}
username.maxlength = 10
------------------------------------------------------------------------------
validation.xml tips :
------------------------------------------------------------------------------
<field property="username" depends="maxlength">
<arg0 name="maxlength" key="username.maxlength" resource="true" />
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
</field>
------------------------------------------------------------------------------
这样我们也能达到同样的效果。Right? 但是谁愿意呢? 只是我这样写似乎更加容易理解吧.并且这样做就失去了validation的某些特别的功效,你得为每个重新在资源文件里写一条message,不值得。
2. validation.xml 中的msg属性.
官方资料:[The default error message for a pluggable validator can be overriden with the msg element. So instead of using the msg attribute for the mask validator to generate the error message the msg attribute from the field will be used if the name of the field's name attribute matches the validator's name attribute.]后面的例子我也就没有给出来,那么这句话到底在肌理哇啦个什么呢? 先看一小段代码:
------------------------------------------------------------------------------------------------
<field property="username" depends="maxlength">
<arg0 name="maxlength" key="${var:maxlength}" resource="false" />
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
</field>
------------------------------------------------------------------------------------------------
再强调一遍:validation的错误信息是这样组装的:通过arg0 - arg3等来和资源文件里面的并且消息名字在validator-rule.xml定义好的规则所对应的消息来合成的。validator-rule.xml所定义的msg是面向所有的该规则的错误消息,每个form field可以通过arg0-arg3来定制自己的消息(这个我提到过)
如果我们加入msg消息到filed标签下面:
------------------------------------------------------------------------------------------------
<field property="username" depends="maxlength">
<msg name="maxlength" key="msg.maxlength" />
<arg0 name="maxlength" key="${var:maxlength}" resource="false" />
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
</field>
------------------------------------------------------------------------------------------------
那么此时的maxlength在规则里面的msg将会被<field>里面的msg覆盖,也就是说<arg0>的定义形同虚设,更会无视resourse属性的false or true;
3.几个规则(rules)作用于同一个form的属性上面
------------------------------------------------------------------------------------------------
<field property="username" depends="required,maxlength,minlength">
<arg0 name="maxlength" key="${var:maxlength}" resource="false" />
<arg1 name="required" key="prompt.username" />
<arg2 name="minlength" key="${var:minlength}" resource="false" />
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
<var>
<var-name>minlength</var-name>
<var-value>3</var-value>
</var>
</field>
------------------------------------------------------------------------------------------------
如果很多约束针对某一个form的属性,我们可以这样写,当然如果你非要分开写也可以。那么在xml文件中一个form的field就有多条记录.
这里有一点需要注意一下:<arg0><arg1><arg2>在这里定义了以后,别的form的属性也要按照这种顺序来,也就是:<arg0>对应的是 maxlength. <arg1>对应的是minlength.<arg2>对应的是 requried.为什么这样做?
因为在我们的properties文件中是写死的。如果不这样做,那么就会出现得到null值的错误啦.
------------------------------------------------------------------------------------------------
errors.required ={1} is required.
errors.maxlength = The length of the password can not surpass {0}
errors.minlength = The length of the password can not shorter than {2}
------------------------------------------------------------------------------------------------
补充一下validwhen的用法
<field property="emailAddress" depends="validwhen">
<arg0 key="userinfo.emailAddress.label"/>
<var>
<var-name>test</var-name>
<var-value>((sendNewsletter == null) or (*this* != null))</var-value>
</var>
</field>
上面定义的意思是:如果通讯地址是空或不空时这个字段时有效的
分享到:
相关推荐
在使用Struts Validation框架之前,需要在`struts-config.xml`文件中配置Validator插件。例如: ```xml <plug-in className="org.apache.struts.validator.ValidatorPlugin"> ,/WEB-INF/validation.xml"/> ``` ...
NULL 博文链接:https://yueguangyuan.iteye.com/blog/268000
在Struts2中,Validation框架是用于处理数据验证的重要组件,它允许开发者在用户输入提交到服务器之前或之后进行验证,确保数据的准确性和完整性。下面将详细解释Struts2中的Validation框架及其在前后台验证中的应用...
Struts2提供了一些基于XWork Validation Framework的内建验证程序,它们大大简化了输入验证工作。 使用这些验证程序不需要编程,程序员只需要在一个XML文件里对验证程序应该如何工作做出声明就行了。需要声明的内容...
自动验证基于配置文件(通常是struts-config.xml或struts-validation.xml)和自定义的ValidatorForm类。在配置文件中,开发者定义了每条验证规则,如字段的必要性、长度限制、正则表达式等。自定义的ValidatorForm类...
### Struts1.2中的Validation验证框架实现步骤详解 #### 一、环境配置与准备工作 在Struts1.2框架中实现验证功能首先需要完成环境配置。这包括添加必要的库文件(JAR包)、配置XML文件等。 ##### 1.1 添加...
从...相信对正在学习Struts2的朋友有很大的帮助,最后还要说重申,所用资料均来源于互联网,所有版权归原作者所有! 上班时间偷偷做的,希望能对大家有所帮助,多多交流!
这些问题需要对Struts2和Validation框架有深入理解才能有效解决。 总之,Struts2与Validation的结合使用,能够帮助开发者构建更加健壮的Web应用,通过严谨的数据验证避免无效或错误的用户输入,提升用户体验。同时...
Struts的Validation验证框架是基于Java的Web应用开发中的一个重要组件,主要用于处理用户输入的数据验证。这个框架在Struts 1.x版本中被广泛使用,它通过定义一系列的规则来确保用户提交的数据满足应用程序的需求,...
Struts validation 验证框架配置,简单易懂,一看就会
Struts2提供了一种强大的验证机制,即Struts2 Validation,它允许开发者定义并执行表单字段的验证规则。 验证在Web开发中的主要目的是防止无效数据进入数据库或执行错误的业务逻辑。Struts2的验证框架允许我们在...
在Struts2框架中,`validation.xml`是用于定义验证规则的重要配置文件。根据所提供的信息,我们可以了解到文章主要探讨了Struts2中两种不同的`validation.xml`配置方式,并且通过一个具体的例子进行了说明。下面将对...
Struts2 Validation是Apache Struts框架的一个重要组成部分,主要用于处理Web应用中的数据验证。这个框架提供了灵活且强大的机制,帮助开发者实现对用户输入的有效性检查,确保数据的准确性和安全性。下面将详细介绍...
这篇博客"Struts2 Validation入门"可能引导读者了解如何在Struts2中实现有效且直观的输入验证。 在Struts2框架中,验证分为两个主要阶段:客户端验证和服务器端验证。客户端验证通常通过JavaScript在用户的浏览器上...
在Struts中,Validation框架是用于处理用户输入验证的重要组件,它可以确保用户提交的数据符合预定义的规则,从而提高应用程序的安全性和用户体验。 在创建一个注册模块时,通常需要对用户的输入数据进行严格的验证...
这个"struts_validation.zip"压缩包显然包含了与Struts框架相关的验证功能的示例项目。Struts的核心目标是提供一个可扩展且模块化的平台,用于构建企业级的Java Web应用程序。在Struts中,验证是非常重要的一环,它...
2. **Validator插件**:Struts2的Validator插件提供了验证框架,它可以读取XML配置文件(struts-validation.xml或struts-plugin.xml)或使用注解定义验证规则。 3. **Validation拦截器**:这是Struts2的核心组件之...
在Struts2框架中,`validation.xml`是用于定义数据校验规则的重要配置文件,它允许开发者对Action类中的字段进行各种格式的验证,确保数据的完整性和正确性。通过`validation.xml`,我们可以实现对日期、字符、数字...
3. **错误消息定义**:在`struts-config.xml`文件中,或者在`Validation.xml`中,你需要定义错误消息,以便当验证失败时向用户显示。 4. **ActionMapping配置**:在`struts-config.xml`中,配置ActionMapping,关联...