学习笔记: Struts2中使用validate框架对Action的不同方法进行验证

Struts2中对输入校验最常用无非就是重写ActionSupport类的validate方法(编写java代码)和使用validate框架(xml文件)。

先看一下编写java代码进行验证的方法:编写Action时从ActionSupport继承,重写validate方法,则可以对整个Action进行输入校验。注意:因为我们一般都在Action中编写很多个跟业务逻辑相关的方法,而不仅仅是execute方法(类似于Struts1中的DispatchAction),而不同的方法所对应的jsp中的表单可能不一样,那么对不同方法的验证显然是不一样的,这时有一个解决方法就是针对不同的方法编写不同的validate方法,比如对test()方法的验证,编写public void validateTest()方法,依次类推,这时客户端通过叹号(比如”test!aa.action”“test!bb.action”)调用Action的某个方法时,会先执行该方法的验证方法。这里还要说一下,重写的validate()方法对整个Action起作用,所以可删掉validate()方法,如果使用了execute()方法,将其改名为validateExecute()也可!

现在看一下Struts2利用xml实现的validate框架,这是最常用的Struts2输入校验,简便且功能强大!具体的使用就不说了,重点在于对Action不同的方法的校验。

对整个Action可以在与该Action类同路径下编写一个xml文件,比如TestAction,可编写TestAction-validation.xml文件,对整个Action进行校验,那么比如该Action中有aa()、bb()cc() …方法,那么如何对单独的各个方法进行输入校验呢?

Struts2提供的方法是结合struts.xml文件中对TestAction的配置来实现,如在struts.xml中这样配置TestAction

 

<action name="test_aa"

method="aa"

class="com.bluesun.struts2.action.TestAction">

</action>

 

<action name="test_bb"

method="bb"

class="com.bluesun.struts2.action.TestAction">

</action>

 

<action name="test_cc"

method="cc"

class="com.bluesun.struts2.action.TestAction">

</action>

 

这样在TestAction类路径下编写TestAction-test_aa-validation.xmlTestAction-test_bb-validation.xmlTestAction-test_cc-validation.xml,分别对不同的业务逻辑相关方法进行输入校验(同样注意TestAction-validation.xml文件对整个Action的验证作用哈)。

 

大家发现如果采用上面的配置,即对一个Action类配置了多个name,极不方便。大家如果在Struts1中使用过模式匹配,就会发现,Struts2中同样可以使用模式匹配来解决这个问题,下面是使用了模式匹配后的配置:

 

 

<action name="test_*"

method="{1}"

class="com.bluesun.struts2.action.TestAction">

</action>

 

另外,这样的配置也支持 test.action test_.action 的访问,调用的是execute()方法。(大家可以参考Struts2的开发包中的apps实例)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值