39-41.Struts2_短路验证&非字段验证&相同的验证规则使用同一条响应消息&自定义验证器
2017-05-16 21:43
351 查看
主要笔记
7). 关于非字段验证: 不是针对于某一个字段的验证.
8). 不同的字段使用同样的验证规则, 而且使用同样的响应消息 ?
error.int=getText(fieldName)needstobebetween{min} and ${max}
age=\u5E74\u9F84
count=\u6570\u91CF
详细分析参见 PPT 159.
9). 自定义验证器:
I. 定义一个验证器的类
II. 在配置文件中配置验证器
III. 使用: 和目前的验证器一样.
IV. 示例代码: 自定义一个 18 位身份证验证器
validators.xml
i18n.properties
TestValidatorAction-testvalidator-validation.xml
7). 关于非字段验证: 不是针对于某一个字段的验证.
<validator type="expression"> <param name="expression"><![CDATA[password==password2]]></param> <message>Password is not equals to password2</message> </validator> 显示非字段验证的错误消息, 使用 s:actionerror 标签: <s:actionerror/>
8). 不同的字段使用同样的验证规则, 而且使用同样的响应消息 ?
error.int=getText(fieldName)needstobebetween{min} and ${max}
age=\u5E74\u9F84
count=\u6570\u91CF
详细分析参见 PPT 159.
9). 自定义验证器:
I. 定义一个验证器的类
> 自定义的验证器都需要实现 Validator. > 可以选择继承 ValidatorSupport 或 FieldValidatorSupport 类 > 若希望实现一个一般的验证器, 则可以继承 ValidatorSupport > 若希望实现一个字段验证器, 则可以继承 FieldValidatorSupport > 具体实现可以参考目前已经有的验证器. > 若验证程序需要接受一个输入参数, 需要为这个参数增加一个相应的属性
II. 在配置文件中配置验证器
> 默认情况下下, Struts2 会在 类路径的根目录下加载 validators.xml 文件. 在该文件中加载验证器. 该文件的定义方式同默认的验证器的那个配置文件: 位于 com.opensymphony.xwork2.validator.validators 下的 default.xml > 若类路径下没有指定的验证器, 则从 com.opensymphony.xwork2.validator.validators 下的 default.xml 中的验证器加载
III. 使用: 和目前的验证器一样.
IV. 示例代码: 自定义一个 18 位身份证验证器
validators.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator Definition 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd"> <!-- START SNIPPET: validators-default --> <validators> <validator name="idcard" class="com.hgh.struts2.validator.IDCardValidator"/> </validators>
i18n.properties
error.int=i18n ${fieldName} needs to be between ${min} and ${max}
TestValidatorAction-testvalidator-validation.xml
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <validators> <field name="age"> <!-- 设置短路验证: 若当前验证没有通过, 则不再进行下面的验证 <validator …/> 元素和 <field-validator …/> 元素可以指定一个可选的 short-circuit 属性,该属性指定该验证器是否是短验证器,默认值为 false。 对同一个字段内的多个验证器,如果一个短路验证器验证失败,其他验证器不会继续校验 --> <field-validator type="conversion" short-circuit="true"> <message>^Conversion Error Occurred</message> </field-validator> <field-validator type="int"> <param name="min">20</param> <param name="max">50</param> <!-- <message>Age needs to be between ${min} and ${max}</message>error.int <message key="error.int"></message> --> <message key="error.int"></message> </field-validator> </field> <field name="count"> <field-validator type="int"> <param name="min">20</param> <param name="max">50</param> <message key="error.int"></message> </field-validator> </field> <!-- 关于非字段验证: 不是针对于某一个字段的验证.expression --> <validator type="expression"> <param name="expression"><![CDATA[passWord1==passWord2]]></param> <message>Password is not equals to password2</message> </validator> <!-- 使用自定义的验证器 --> <field name="idCard"> <field-validator type="idcard"> <message>不合法的身份证</message> </field-validator> </field> </validators>
相关文章推荐
- Struts2 中,相同的验证规则,如何使用同一条异常响应信息,及动态调用各自对应的名称?
- 24.struts2_短路验证,非字段验证,相同验证规则使用一条相应
- 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate
- 消息 8101,级别 16,状态 1,第 1 行 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'MyShop'中的标识列指定显式值。
- 解决给MFC的类添加消息响应函数时报错“because the code element 'Cxxx' is read only ”
- Look'n'stop防火墙+注册+汉化+使用教程+规则!
- 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate
- 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate
- 你的服务器没有正确响应Token验证,请阅读消息接口使用指南。
- Flask 中使用 JSON 响应页面的 Ajax 请求报错 TypeError: 'dict' object is not callable
- 微信公众平台 接口设置出现“你的服务器没有正确响应Token验证,请阅读消息接口使用指南”解决方案 Python
- 微信验证开发者代码,解决微信请求URL超时,你的服务器没有正确响应Token验证,请阅读消息接口使用指南
- yii2.0验证规则源码分析&php正则使用
- 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate
- JDK1.5使用总结 --《Java 1.5 Tiger: A Developer's Notebook》
- "在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误"的解决方法
- asp出错:Microsoft JET Database Engine (0x80004005)不能使用 '';文件已在使用中。
- 关于"使用注册为 allowDefinition='MachineToApplication' 的节是错误的"的解决方案
- 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate
- 'Sys' is undefined 错误 -- 使用ASP.NET 2.0 AJAX Extensions