2013-10-03 46 views
0

我下面这个问题--->Spring MVC: How to perform validation?Spring MVC的验证工作不

这里是我的控制器代码

@RequestMapping(value = "saveBankDetails.htm", method = RequestMethod.POST) 
    public ModelAndView saveBankDetails(ModelMap model ,@Valid @ModelAttribute("SpringWeb")BankDetails bean, 
      BindingResult result){ 
       System.out.println(result.hasErrors()); 
       System.out.println(bean.getNoOfBankDetails()); 
       System.out.println(bean.getBankDetails().get(0).getNameOfBank()); 
       if(result.hasErrors()) 
       { 
        return new ModelAndView("error/error", "command",new String()); 
       } 
       else{ 
        return new ModelAndView("bankDetails/bankDetails", "command",bean);  
       } 
    } 

BankDetails bean包含EntityBankDetails的ArrayList中。我已经申请验证,EntityBankDetail的领域如

public class EntityBankDetail { 
    @NotNull 
    @Size(max = 3) 
    private String nameOfBank; 
    private Double EMIforProposedLoan; 
    private String nameOfBranch; 
    private String accountType; 
    private String accountNumber; 
    private String applicantType; 
//Getters and Setters 
    } 

和我BankDetail字段中输入3点以上的字符 这样,我得到控制台控制器的输出作为

false 
3 
fsdafsdfsdaf 

为什么我的验证不起作用?我做错了什么?请咨询..

编辑包括BankDetailBean

/* 
* This class represent the entire Bank Details Page. It can contain 0-4 EntityBankDetais 
* */ 
public class BankDetails { 

    private ArrayList<EntityBankDetail> bankDetails; 

    private String[] entities; 
    @Size(max = 1) 
    private int noOfBankDetails; 

    public ArrayList<EntityBankDetail> getBankDetails() { 
     return bankDetails; 
    } 
    public void setBankDetails(ArrayList<EntityBankDetail> bankDetails) { 
     this.bankDetails = bankDetails; 
    } 
    public String[] getEntities() { 
     return entities; 
    } 
    public void setEntities(String[] entities) { 
     this.entities = entities; 
    } 
    public int getNoOfBankDetails() { 
     return noOfBankDetails; 
    } 
    public void setNoOfBankDetails(int noOfBankDetails) { 
     this.noOfBankDetails = noOfBankDetails; 
    } 
} 

我对这个bean该类EntityBankDetail解决不了输入出现错误。两者在同一个包裹中为什么如此?

+0

发布你的'BankDetails' bean。 –

+1

将'@ Valid'添加到您的'bankDetails'属性。否则验证器将不检查它。 –

回答

1

在使用spring-mvc时,应该在应用程序上下文配置中指定<mvc:annotation-driven />以便能够在控制器中使用JSR-303验证。或者你可以配置LocalValidatorFactoryBean的实例并将其传递给<mvc:annotation-driven validator="yourValidator" />