struts2利用annotation和xml两种方式验证

本文详细介绍了Struts2框架中的验证机制,包括通过XML文件和注解两种方式进行验证配置的方法。具体阐述了class-validation.xml和class-alias-validation.xml的区别及应用场景,并提供了使用注解进行字段验证的具体实例。

1Struts2 验证之一采用xml

1.validation.xml文件的命名有两种方式,即class-validation.xmlclass-alias-validation.xml。其中的class就是该Action的类名(不含.class)alias就是action-name。需要注意的是,class-validation.xml在调用该class的任何方法时都会起作用,class-alias-validation.xml则仅在和alias中的action-name相同时才起作用。如果你希望某个action到来时,仅有class-alias-validation.xml发生作用,那是做不到的。所以在class-validation.xml只能放全体method都用的着的验证条件,或者索性不建立class-validation.xml这个文件,而只使用class-alias-validation.xml  alias struts.xml中配置的acction名。

 

如下:BookAction-Store-validation.xml,说明验证只对BookAtcion中的store方法起作用。

<action name="Store" class="tutorial.action.BookAction" method="store">

           <result type="redirect">List.action</result>

           <result name="input">Edit.jsp</result>   (必须配置一个默认的input指向页面,也时出现验证错误的页面转向。)

       </action>

 

2Struts2 验证之一采用annotation

package tutorial.action;

import java.util.Collection;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import org.apache.struts2.interceptor.ServletRequestAware;

import org.apache.struts2.interceptor.validation.SkipValidation;

import tutorial.dao.BookDao;

import tutorial.model.Book;

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.validator.annotations.RequiredFieldValidator;

import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;

import com.opensymphony.xwork2.validator.annotations.Validation;

import com.opensymphony.xwork2.validator.annotations.Validations;

import com.opensymphony.xwork2.validator.annotations.ValidatorType;

import common.MyException;

 

@Validation()  //表示使用注解验证

//If you want to use several annotations of the same type, these annotation //must be nested within the @Validations() annotation

@Validations(requiredStrings ={ @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "book.title", message = "title is not null")},

            requiredFields={@RequiredFieldValidator(type = ValidatorType.SIMPLE, fieldName = "book.price", message = "price is not null")}) 

public class BookAction extends ActionSupport implements ServletRequestAware {

    private static final long serialVersionUID = 872316812305356L;

   

    private String isbn;

    private String[] isbns;

    private Book book;

    private Collection<Book> books;

    private BookDao dao =  BookDao.getInstance();

    private HttpServletRequest request;   

  

    public Book getBook() {

        return book;

    }

 

    public void setBook(Book book) {

        this.book = book;

    }

 

    public String getIsbn() {

        return isbn;

    }

 

    public void setIsbn(String isbn) {

        this.isbn = isbn;

    }

 

    public String[] getIsbns() {

        return isbns;

    }

 

    public void setIsbns(String[] isbns) {

        this.isbns = isbns;

    }

       

    public Collection<Book> getBooks() {

        return books;

    }

 

    public void setBooks(Collection<Book> books) {

        this.books = books;

    }

    @SkipValidation()  //表示这个方法忽略验证

    public String load() {

        book = dao.getBook(isbn);

        return SUCCESS;

    }

    @SkipValidation()

    public String list() {

   

        books = dao.getBooks();

        request.setAttribute("msg", "aaaaaaaaaa");

        HttpServletRequest aa= ServletActionContext.getRequest();

        aa.setAttribute("aa", "eeeeeeeeeeeeeeeee");

        return SUCCESS;

    }

 

 

    public String store() throws MyException {

    if (book.getTitle().equals("admin")) {

           throw new MyException("自定义异常");

       }

        dao.storeBook(book);

        return SUCCESS;

    }

    @SkipValidation()

    public String remove() {

        if(null != isbn) {

            dao.removeBook(isbn);

        } else {

            dao.removeBooks(isbns);

        }

       

      

        return SUCCESS;

    }

 

    public void setServletRequest(HttpServletRequest arg0) {

       request=arg0;    

    }

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值