mvc mùa xuân mới nhất, sử dụng freemarker.Bối rối như làm thế nào để xác nhận hình thức mùa xuân mvc, lựa chọn của tôi là gì?
Hy vọng một người nào đó có thể cho tôi biết các tùy chọn của tôi là gì về việc xác thực biểu mẫu có mvc mùa xuân và cách đề xuất sẽ là thực hiện điều này.
Tôi có biểu mẫu không ánh xạ trực tiếp vào một mô hình, nó sẽ được sử dụng để khởi tạo 2 đối tượng mô hình mà sau đó tôi sẽ cần xác thực và nếu chúng vượt qua, tôi sẽ lưu chúng .
Nếu không thành công, tôi muốn quay lại biểu mẫu, điền trước các giá trị với những gì người dùng đã nhập và hiển thị thông báo lỗi.
Tôi đã đọc ở đâu đó về 2 phương pháp, một lần trong số đó tôi đã làm và hiểu cách hoạt động:
@RequestMapping(...., method = RequestMethod.POST)
public ModelAndView myMethod(@Valid MyModel, BindingResult bindingResult) {
ModelAndView mav = new ModelAndView("some/view");
mav.addObject("mymodel", myModel);
if(bindingResult.hasErrors()) {
return mav;
}
}
Bây giờ điều này đã làm việc nếu hình thức của tôi ánh xạ trực tiếp đến hình thức, nhưng trong hoàn cảnh của tôi tôi có:
trường biểu mẫu không ánh xạ tới bất kỳ mô hình cụ thể nào, chúng có một vài thuộc tính từ 2 mô hình.
trước khi xác nhận occurrs, tôi cần phải tạo ra các mô hình 2 bằng tay, thiết lập các giá trị từ các hình thức, và tự thiết lập một số thuộc tính cũng:
Gọi validate trên cả hai mô hình (MODEL1, MODEL2), và thêm các thông báo lỗi này đến bộ sưu tập lỗi mà tôi cần phải quay lại cùng một trang xem nếu mọi thứ không hoạt động.
khi biểu mẫu đăng bài, tôi phải thực hiện một số cuộc gọi cơ sở dữ liệu và dựa trên những kết quả đó có thể cần thêm thông báo bổ sung vào bộ sưu tập lỗi.
Ai đó có thể cho tôi biết cách thực hiện loại xác thực này?
Pseudo mã bên dưới:
Model1 model1 = new Model1();
Model2 model2 = new Model2();
// manually or somehow automatically set the posted form values to model1 and model2.
// set some fields manually, not from posted form
model1.setProperty10(GlobalSettings.getDefaultProperty10());
model2.setProperty11(GlobalSettings.getDefaultProperty11());
// db calls, if they fail, add to errors collection
if(bindingResult.hasErrors()) {
return mav;
}
// validation passed, save
Model1Service.save(model1);
Model2Service.save(model2);
redirect to another view
Cập nhật
Tôi đã sử dụng các chú thích JSR 303 trên mô hình của tôi ngay bây giờ, và nó sẽ tuyệt vời nếu tôi có thể sử dụng những vẫn còn.
Cập nhật II
Xin mời đọc kỹ mô tả tiền thưởng dưới đây cho một bản tóm tắt về những gì tôi đang tìm kiếm.