读书人

Struts2应用开发详解-16、对Action中的

发布时间: 2012-09-03 09:48:39 作者: rapoo

Struts2应用开发详解--16、对Action中的方法进行校验

struts2的校验可以用两种方式实现:

一、java代码实现:

以action类实现ActionSupport的方式实现代码校验,struts框架会调用重写的validate()方法对所有的action方法进行校验过滤。代码片段如下:

package test;

?

import com.opensymphony.xwork2.ActionSupport;

?

public class ValidateAction extends ActionSupport {

?private Long id;
?private String name;
?
?public Long getId() {
??return id;
?}

?public void setId(Long id) {
??this.id = id;
?}

?public String getName() {
??return name;
?}

?public void setName(String name) {
??this.name = name;
?}

?public String test(){
??return "success";
?}
?
?public String execute(){
??return "success";
?}
?
?public void validate() {
??// TODO Auto-generated method stub
??if(id == null){
???this.addFieldError("id", "id不能为空");
??}
??if(name == null || name.trim().length() == 0){
???this.addFieldError("name", "name不能为空");
??}
?}

}?

?

jsp页面片段如下:

<s:fielderror />
?<form action="/validate.action">
??<input type="text" name="id" /></br>
??<input type="text" name="name" /></br>
??<input type="submit" value="提交"/>
?</form>

?其中<s:fielderror />负责将validate()方法中的错误信息列表进行输出,这样就完成了整个验证流程。

如果仅仅只需要实现对execute()方法进行验证,那么只需要实现validateExecute()方法。框架会自动绑定execute()方法进行验证,其他方法则不进行验证。

?

二、xml配置文件实现:

xml的验证需要为action类建立对应的.xml配置文件,文件命名格式为ActionClassName-validation.xml。以前文所创建的类为例则需要建立ValidateAction-validation.xml文件。

配置文件如下:

<!DOCTYPE validators PUBLIC
??????? "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
??????? "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
??? <field name="id">
??????? <field-validator type="requiredstring">
??????????? <message key="requiredstring"/>
??????? </field-validator>
??? </field>
??? <field name="name">
??????? <field-validator type="requiredstring">
??????????? <message key="requiredstring"/>
??????? </field-validator>
??? </field>
</validators>

如上配置可以完成前文中validate()方法的实现,其他代码如jsp文件和struts.xml配置则完全相同。

如需实现对action中指定方法的xml校验则需要建立ActionClassName-ActionName-validation.xml的配置文件,其中ActonName为struts.xml中的action的名称。如:

<!-- 首先配置通配符实现url制定方法调用 -->
??????? <action name="validate_*" method="{1}">
??????? ?? <result name="success">/page/hello.jsp</result>
??????? </action>

?

要对test()方法进行校验,校验的文件名则为:ValidateAction-validate_test-validation.xml?

对execute()方法进行校验,校验的文件名则为:ValidateAction-validate_execute-validation.xml

这样变实现了对不同action 方法绑定校验。

读书人网 >软件架构设计

热点推荐