如何做到 一个Action 类 应对多个action 请求

问题如果一个Action类需要应对多个action请求,且每个action 请求的验证规则有不一样,该如何处理?

> 为每一个不同的 action 请求定义其对应的验证文件: ActionClassName_AliasName_validation.xml

> 不带别名的配置文件: ActionClassName-validation.xml 中的验证规则依然会发生作用. 可以把每个 action 公共的验证规则配置在其中. 但需要注意的是, 只适用于某一个 action 的请求的验证规则就不要这里再配置了


示例如下

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 我是分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

项目结构

如何做到 一个Action 类 应对多个action 请求_第1张图片


person 类 和Action 类详见:如何进行声明式验证之字段验证? 中的 person 类 和Action

验证器:

爸爸:公用验证器 TestAgeValidation-validation.xml 这里面没有别名





     
         
             1
             130
             
         
     
     


儿子1:TestAgeValidation-testAge1-validation.xml  给儿子起个别名testAge1  好和老子区分开, 同时这个别名也对应的是一个名为 testAge1 的action 请求




     
         
             10
             50
             
         
     
     
儿子2:TestAgeValidation-testAge2-validation.xml   




     
         
             51
             90
             
         
     
     

国际化资源文件

基类: 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






		
	
	
	
	
		
		
			
				
					false
				
			
		
		
	
		
			/validation.jsp
			
			/validation.jsp
		
		
		
			/validation.jsp
			
			/validation2.jsp
			
			
		
		
		
			/validation.jsp
		
		
			/validation.jsp
			
		
	


 页面 JSP

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


	
	

To validation

To validation2
validation.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>




Insert title here


		

中文   English

主页


validation2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>




Insert title here


	
		
	
fieldErrors.age[0]:  ${fieldErrors.age[0] }

fieldErrors.age[1]: ${fieldErrors.age[1] }



s:fielderror: 

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>




Insert title here



	Age:
	

恭喜你有为青年!


效果:

如何做到 一个Action 类 应对多个action 请求_第2张图片

如何做到 一个Action 类 应对多个action 请求_第3张图片




通过实验 我们知道了 爸爸验证器 TestAgeValidation-validation.xml  和 儿子验证器 TestAgeValidation-testAge1-validation.xml

与 TestAgeValidation-testAge2-validation.xml ,分别有什么作用,及名命名规则:

爸爸的命名规则:ActionClassName_validation.xml

儿子的命名规则:ActionClassName_AliasName_validation.xml

现在孩子都是宝贝蛋 ,因此要放在父母中间,这样安全!

你可能感兴趣的:(Struts2)