如何做到 一个Action 类 应对多个action 请求
2016-05-12 16:24
633 查看
问题:如果一个Action类需要应对多个action请求,且每个action 请求的验证规则有不一样,该如何处理?
>
为每一个不同的 action 请求定义其对应的验证文件: ActionClassName_AliasName_validation.xml
> 不带别名的配置文件: ActionClassName-validation.xml 中的验证规则依然会发生作用. 可以把每个 action 公共的验证规则配置在其中.
但需要注意的是, 只适用于某一个 action 的请求的验证规则就不要这里再配置了.
示例如下
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 我是分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
项目结构
类
person 类 和Action 类详见:如何进行声明式验证之字段验证? 中的 person
类 和Action
验证器:
爸爸:公用验证器 TestAgeValidation-validation.xml 这里面没有别名
儿子1:TestAgeValidation-testAge1-validation.xml 给儿子起个别名testAge1
好和老子区分开, 同时这个别名也对应的是一个名为 testAge1 的action 请求
国际化资源文件
基类: nihao.properties
配置:struts.xml
页面 JSP
index.jsp
validation2.jsp
效果:
通过实验 我们知道了 爸爸验证器 TestAgeValidation-validation.xml
和 儿子验证器 TestAgeValidation-testAge1-validation.xml
与 TestAgeValidation-testAge2-validation.xml ,分别有什么作用,及名命名规则:
爸爸的命名规则:ActionClassName_validation.xml
儿子的命名规则:ActionClassName_AliasName_validation.xml
现在孩子都是宝贝蛋 ,因此要放在父母中间,这样安全!
>
为每一个不同的 action 请求定义其对应的验证文件: ActionClassName_AliasName_validation.xml
> 不带别名的配置文件: ActionClassName-validation.xml 中的验证规则依然会发生作用. 可以把每个 action 公共的验证规则配置在其中.
但需要注意的是, 只适用于某一个 action 的请求的验证规则就不要这里再配置了.
示例如下
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 我是分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
项目结构
类
person 类 和Action 类详见:如何进行声明式验证之字段验证? 中的 person
类 和Action
验证器:
爸爸:公用验证器 TestAgeValidation-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"> <field-validator type="int"> <param name="min">1</param> <param name="max">130</param> <message key="error.int"></message> </field-validator> </field> <!-- 像非空验证,就可以写在公共验证器中 <field name="age"> <field-validator type="required"> <message>age must not be null</message> </field-validator> </field> --> </validators>
儿子1:TestAgeValidation-testAge1-validation.xml 给儿子起个别名testAge1
好和老子区分开, 同时这个别名也对应的是一个名为 testAge1 的action 请求
<!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"> <field-validator type="int"> <param name="min">10</param> <param name="max">50</param> <message key="error.int"></message> </field-validator> </field> </validators>儿子2:TestAgeValidation-testAge2-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"> <field-validator type="int"> <param name="min">51</param> <param name="max">90</param> <message key="error.int"></message> </field-validator> </field> </validators>
国际化资源文件
基类: nihao.properties
username=UserName password=Password submit=Submit time=Time:{0} error.int=Age needs to be between ${min} and ${max} age=Age中文 :nihao_zh_CN.properties
username=\u7528\u6237\u540D password=\u5BC6\u7801 submit=\u63D0\u4EA4 time=\u65F6\u95F4:{0} time2=\u65F6\u95F4:${birth} error.int=\u5E74\u9F84\u9700\u8981\u5728 ${min} \u548C ${max}\u4E4B\u95F4 age=\u5E74\u9F84英文:nihao_en_US.properties
username=UserName password=Password submit=Submit time=Time:{0} time2=Time:${birth} error.int=Age needs to be between ${min} and ${max} age=Age
配置:struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 配置全局的国际化资源文件 --> <constant name="struts.custom.i18n.resources" value="nihao"></constant> <package name="default" namespace="/" extends="struts-default"> <!-- 这个就是起烂笔头的作用 --> <interceptors> <interceptor-stack name="baiduStack"> <interceptor-ref name="paramsPrepareParamsStack"> <param name="prepare.alwaysInvokePrepare">false</param> </interceptor-ref> </interceptor-stack> </interceptors> <default-interceptor-ref name="baiduStack"/> <action name="testAge1" class="com.baidu.ActionValidation.TestAgeValidation"> <result>/validation.jsp</result> <result name="input">/validation.jsp</result> </action> <action name="testAge2" class="com.baidu.ActionValidation.TestAgeValidation"> <result>/validation.jsp</result> <result name="input">/validation2.jsp</result> </action> <!-- 中英文切换 是要使i18n 拦截器工作,因此是要使用一个action请求去调动其工作 --> <!-- index.jsp 通过action 转到 validation.jsp --> <action name="testVali" > <result>/validation.jsp</result> </action> <action name="testAge3" > <result>/validation.jsp</result> </action> </package> </struts>
页面 JSP
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <br><br> <!-- 实验中英文切换 --> <a href="testVali.action"> To validation </a> <br><br> <a href="validation2.jsp"> To validation2 </a> </body> </html>validation.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <br><br> <a href="testAge1.action?request_locale=zh_CN">中文</a> <a href="testAge1.action?request_locale=en_US">English</a> <br><br> <a href="index.jsp">主页</a> <center> <s:fielderror fieldName="age"></s:fielderror> <br><br> <s:form action="testAge1" theme="simple" > <s:text name="age"></s:text> <s:textfield name="age" label="Age"></s:textfield> <s:submit></s:submit> </s:form> </center> </body> </html>
validation2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <s:debug></s:debug> <center> fieldErrors.age[0]: ${fieldErrors.age[0] } <br><br> fieldErrors.age[1]: ${fieldErrors.age[1] } <br><br> <br><br> s:fielderror: <s:fielderror fieldName="age"></s:fielderror> <br><br> <s:form action="testAge2" theme="simple" > <s:text name="age"></s:text> <s:textfield name="age" label="Age"></s:textfield> <s:submit></s:submit> </s:form> </center> </body> </html>success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> Age:<s:property value="age" /> <h3>恭喜你有为青年!</h3> </body> </html>
效果:
通过实验 我们知道了 爸爸验证器 TestAgeValidation-validation.xml
和 儿子验证器 TestAgeValidation-testAge1-validation.xml
与 TestAgeValidation-testAge2-validation.xml ,分别有什么作用,及名命名规则:
爸爸的命名规则:ActionClassName_validation.xml
儿子的命名规则:ActionClassName_AliasName_validation.xml
现在孩子都是宝贝蛋 ,因此要放在父母中间,这样安全!
相关文章推荐
- 《校园封神榜》初步测试讨论
- 深入理解Apache的mod_rewrite
- 基于 BinaryReader 的高效切割TXT文件
- C#获取CPU编号
- Table of Contents - Tomcat
- linux入侵检测工具chkrootkit
- 11-散列1 电话聊天狂人
- Linux chmod命令详解
- ExtJS中DragDrop插件的一些使用实例
- Oracle VM + centos7.1+openstack kilo 多结点安装教程---neutron的安装(2)
- jdbc查询oracle空字段数据时的表现
- 3.swift修饰符
- 课堂作业一
- 高仿网易云音乐---之扫描本地歌曲
- 使用sdl接口实现的读写锁,非写优先
- CetOs6.5下 jsoncpp安装 NCURSES的安装
- 数据结构与算法练习-回溯、递归
- JavaScript——1(基本语法,类型,变量与运算符,控制流程,函数)
- Kafka集群监控软件系列文章
- Java学习之接口