如何做到 一个Action 类 应对多个action 请求
来源:互联网 发布:微信淘宝客返利机器人 编辑:程序博客网 时间:2024/06/07 19:58
问题:如果一个Action类需要应对多个action请求,且每个action 请求的验证规则有不一样,该如何处理?
>为每一个不同的 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>
<!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=UserNamepassword=Passwordsubmit=Submittime=Time:{0}error.int=Age needs to be between ${min} and ${max}age=Age中文 :nihao_zh_CN.properties
username=\u7528\u6237\u540Dpassword=\u5BC6\u7801submit=\u63D0\u4EA4time=\u65F6\u95F4:{0}time2=\u65F6\u95F4:${birth}error.int=\u5E74\u9F84\u9700\u8981\u5728 ${min} \u548C ${max}\u4E4B\u95F4age=\u5E74\u9F84英文:nihao_en_US.properties
username=UserNamepassword=Passwordsubmit=Submittime=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
现在孩子都是宝贝蛋 ,因此要放在父母中间,这样安全!
- 如何做到 一个Action 类 应对多个action 请求
- 一个struts的action怎样区分多个请求
- Struts2配置一个Action实现多个请求
- Struts 中的一个action 包含多个请求
- Struts2配置一个Action实现多个请求
- struts 一个action处理过个请求
- struts2.3.1.2 使用动态方法配置 Action,使得一个Action可以处理多个请求
- 一个action多个form
- 一个form多个action
- 一个form多个action
- 一个FORM中如何实现多个ACTION
- 在一个FORM中如何实现多个ACTION动作
- Action类和action请求
- 一个Action内包含多个请求处理方法的处理
- Struts2一个Action内包含多个请求处理方法的处理
- Struts2一个Action内包含多个请求处理方法的处理
- Struts2中一个Action多个请求处理方法的三种实现方式
- Struts2 一个form组成的action内包含多个请求的处理方式。通配符形式。
- Java Thread.join()方法
- github 中的pull request
- <context annotation-config />标签意义
- flask 跨域 cookie
- iOS开发之基础视图—— UIActionSheet
- 如何做到 一个Action 类 应对多个action 请求
- TCP 建立连接和断开连接
- python精确除法
- C# Md5加密
- 深入学习APC
- Android安全攻防战,反编译与混淆技术完全解析(上)
- UI UILabel Button UITextField
- Hadoop日志到底存在哪里
- 使用Alibaba-AndFix Bug热修复框架