2011-08-26 35 views
5

Tôi đang cố gắng sử dụng Xác thực mùa xuân để xác thực mô hình của tôi được trình chuyển đổi Jackson điền. Vì vậy, tôi có một lớp java,Xác nhận mùa xuân - Lập trình liên kết với Trình xác thực

class MyClass(){ 
    private String myString; 
} 

Lớp này được điền bởi Jackson và tôi có cá thể trong mã Java của tôi. cũng đã định nghĩa một lớp validator như,

class MyValidator implements Validator { 
    public boolean supports(Class<?> clazz) { 
     return MyClass.class.equals(clazz); 
    } 
    public void validate(Object object, Errors errors) { 
      //Validation logic here 
    } 
} 

Bây giờ những gì tôi muốn làm là để gửi các đối tượng để các validator và nhận được phản đối các lỗi, kiểm tra và tiến xa hơn. Tuy nhiên, để gọi

validate(Object object,Errors errors) 

Tôi cần một trường hợp lỗi mà tôi không có. Tôi không thể sử dụng BindingResult hoặc Errors. Vui lòng tư vấn về cách tiến hành thêm.

Trả lời

8

Bạn có thể làm điều này bằng tay trong mã với một DataBinder:

MyClass toValidate = new MyClass(); 
DataBinder binder = new DataBinder(toValidate); 
binder.setValidator(new MyValidator()); 
binder.validate(); 
if (binder.getBindingResult().hasErrors()) { 
    // oh noes! 
} 

Mặc dù nếu bạn đã có một @ModelAttribute định nghĩa trong một @Controller vào mùa xuân-MVC, một cái gì đó như thế này nên làm việc (đặt bên trong @Controller có liên quan):

@ModelAttribute("myclass") 
public MyClass myClass() { 
    return new MyClass(); 
} 

@InitBinder("myclass") 
protected void initBinder(WebDataBinder binder) { 
    binder.setValidator(new MyValidator()); 
} 

@RequestMapping(value = "/do/something", method = POST) 
public ModelAndView validatedRequest(@Valid @ModelAttribute("myclass") MyClass profile, 
            BindingResult result) { 
    if (result.hasErrors()) { 
     // oh noes! 
    } 
} 
+0

Cuối cùng tôi đã kết thúc tất cả các xác thực của mình trong một lớp riêng biệt và được gọi trực tiếp từ mô hình. Nhưng đề xuất được cung cấp phải có tác dụng đối với bất kỳ ai gặp phải cùng vấn đề – Raghav

+0

cảm ơn bạn thay đổi nhiều –

Các vấn đề liên quan