Struts 2検証--注記ベース

4048 ワード

一般的には、コンフィギュレーションファイルの中でもJavaコードに注釈を付けることができる(現在の推測)限り、Strutsにとって、これらのコンフィギュレーションは注釈に置かれているにもかかわらず、彼らのメカニズムは同じであり、ブロックでブロックし、xmlと注釈の違いは主にJavaの検証コードに現れていることを検証します.xml私の理解は、プロファイルをロードしてプロファイル内のデータに基づいて対応するactionと検証することであり、注記はactionを反射的に抽出して検証するので、本質的には同じであり、ただ1つの方法を変えただけである(理解が間違っている可能性がある).
strutsのvalidate検証は実はvalidationブロッキングで行われています.ここでdefaultStackブロッキングを使用することを指定し、そこにvalidation.excludeMethodsというパラメータを指定することができます.前に言ったのは検証ブロッキングの名前validationです(struts 2コアパッケージのstruts-default.xmlで見ることができます).後に指定したパラメータ名があります.このパラメータは検証されない方法を指定します.後にtoLoginViewを追加すればいいです.カンマで区切って、検証されません.
 @Validations(
        requiredStrings = {
            @RequiredStringValidator(fieldName = "admin.username", message = "        !"),
            @RequiredStringValidator(fieldName = "admin.password", message = "       !"),
            @RequiredStringValidator(fieldName = "admin.email", message = "E-mail     !")
        },
        requiredFields = {
            @RequiredFieldValidator(fieldName = "admin.isAccountEnabled", message = "         !")
        },
        stringLengthFields = {
            @StringLengthFieldValidator(fieldName = "admin.username", minLength = "2", maxLength = "20", message = "        ${minLength} ${maxLength}  !"),
            @StringLengthFieldValidator(fieldName = "admin.password", minLength = "4", maxLength = "20", message = "       ${minLength} ${maxLength}  !")
        },
        emails = {
            @EmailValidator(fieldName = "admin.email", message = "E-mail    !")
        },
        regexFields = {
            @RegexFieldValidator(fieldName = "admin.username", expression = "^[0-9a-z_A-Z\u4e00-\u9fa5]+$", message = "          、  、      !") 
        }
    )
package com.belstar.action;
import Java.util.ArrayList;
import java.util.List;
import org.apache.struts2.interceptor.validation.SkipValidation;
import com.belstar.bean.Book;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.validator.annotations.DateRangeFieldValidator;
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import com.opensymphony.xwork2.validator.annotations.Validations;
import com.opensymphony.xwork2.validator.annotations.ValidatorType;
//@Validation()
public class BookAction extends ActionSupport {
 private static final long serialVersionUID = -38241432793476229L;
 public static List bookList = new ArrayList();
 private String title;
 private Book book;
 
 //       
 @SkipValidation
 public String initAdd() {
  return "initAdd";
 }
 //     
 @Validations(requiredStrings = {
   @RequiredStringValidator(type = ValidatorType.SIMPLE, trim = true, fieldName = "book.name", message = "       . *"),
   @RequiredStringValidator(type = ValidatorType.SIMPLE, trim = true, fieldName = "book.author", message = "       . *") }, dateRangeFields = { @DateRangeFieldValidator(type = ValidatorType.SIMPLE, fieldName = "book.publishedDate", min = "1900-01-01", max = "2200-01-01", message = "       ${min}    ${max},      ${book.publishedDate}.") })
 public String add() {
  bookList.add(book);
  title = "



"; return "success"; } // @SkipValidation public String list() { return "list"; } // @SkipValidation public String clear() { bookList.clear(); title = "



"; return "list"; } public Book getBook() { return book; } public void setBook(Book book) { this.book = book; } public List getBookList() { return bookList; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } } ,
validate="true" , struts.xml input 。