2012-05-02 45 views

Trả lời

35

Ví dụ cụ thể: sử dụng đối tượng BindingResult làm đối số cho phương thức xác thực của Validator bên trong Bộ điều khiển.

Sau đó, bạn có thể kiểm tra đối tượng này tìm kiếm lỗi xác nhận:

validator.validate(modelObject, bindingResult); 
if (bindingResult.hasErrors()) { 
    // do something 
} 
+5

liên kết này hoàn toàn cho thấy lý do tại sao chúng tôi sử dụng BindingResult http://codetutr.com/2013/05/28/spring-mvc-form-validation/ – keshav

+1

Tôi vẫn không hiểu được chúng tôi đang ràng buộc chính xác điều gì lol –

8

Từ chính thức Spring documentation:

giao diện chung mà đại diện cho kết quả ràng buộc. Mở rộng giao diện cho khả năng đăng ký lỗi, cho phép một Validator được áp dụng, và cho biết thêm ràng buộc cụ thể phân tích và mô hình tòa nhà.

Phục vụ như giữ kết quả cho một DataBinder, thu được thông qua các phương pháp DataBinder.getBindingResult(). Triển khai BindingResult cũng có thể được sử dụng trực tiếp, ví dụ để gọi Trình xác thực trên số (ví dụ như một phần của thử nghiệm đơn vị).

+1

Thnaks trả lời của bạn nhưng xin lỗi tôi không nhận được những gì bạn đã viết .... i am mới để khuôn khổ này. .can bạn đơn giản hóa nó ... ???? – JOHND

+3

@Ajinkya: Bạn có thể muốn trích dẫn từ một thứ khác ngoài tài liệu Spring 2.0. – skaffman

4

BindingResult được sử dụng để xác nhận ..

Ví dụ: -

public @ResponseBody String nutzer(@ModelAttribute(value="nutzer") Nutzer nutzer, BindingResult ergebnis){ 
     String ergebnisText; 
     if(!ergebnis.hasErrors()){ 
      nutzerList.add(nutzer); 
      ergebnisText = "Anzahl: " + nutzerList.size(); 
     }else{ 
      ergebnisText = "Error!!!!!!!!!!!"; 
     } 
     return ergebnisText; 
    } 
6

Về cơ bản BindingResult là một giao diện chỉ ra cách đối tượng lưu trữ kết quả xác thực sẽ lưu trữ và truy xuất kết quả của xác nhận (lỗi, nỗ lực để liên kết với các lĩnh vực không được phép vv)

Từ Spring MVC Form Validation with Annotations Tutorial:

[BindingResult] là đối tượng Spring rằng giữ kết quả của xác nhận và ràng buộc và chứa các lỗi có thể đã xảy ra. Các BindingResult phải đến ngay sau khi đối tượng mô hình được xác nhận hoặc người nào khác Mùa xuân sẽ không xác thực đối tượng và ném một ngoại lệ .

Khi mùa xuân thấy @Valid, nó cố gắng tìm trình xác thực cho đối tượng đang được xác thực. Spring tự động chọn xác nhận hợp lệ chú thích nếu bạn đã bật "chú thích theo hướng chú thích". Mùa xuân sau đó gọi trình xác thực và đặt bất kỳ lỗi nào trong các BindingResult và thêm BindingResult vào mô hình chế độ xem.

12

Điều quan trọng cần lưu ý là thứ tự các thông số thực sự quan trọng đối với mùa xuân. BindingResult cần phải đến ngay sau khi Form đang được xác nhận. Tương tự, tham số Model [tùy chọn] cần phải đến sau BindingResult. Ví dụ:

hợp lệ:

@RequestMapping(value = "/entry/updateQuantity", method = RequestMethod.POST) 
public String updateEntryQuantity(@Valid final UpdateQuantityForm form, 
            final BindingResult bindingResult, 
            @RequestParam("pk") final long pk, 
            final Model model) { 
} 

Không hợp lệ:

RequestMapping(value = "/entry/updateQuantity", method = RequestMethod.POST) 
public String updateEntryQuantity(@Valid final UpdateQuantityForm form, 
            @RequestParam("pk") final long pk, 
            final BindingResult bindingResult, 
            final Model model) { 
} 
Các vấn đề liên quan