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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值