Tôi có mẫu đơn này với tham số year
và name
:mùa xuân-MVC sẽ không ràng buộc tham số yêu cầu của tôi để int
/register?year=&name=test
Lớp học của tôi trông như thế này:
public class Organizer {
private String name;
private int year;
điều khiển của tôi ánh xạ những hai tham số cho lớp học của tôi Organizer
@RequestMapping("/register")
public String register(@Valid Organizer organizer, BindingResult errors...
Vấn đề là bindi ng tham số năm để int. Spring cung cấp cho tôi lỗi
Không thể chuyển đổi giá trị thuộc tính của loại 'java.lang.String' thành loại bắt buộc 'int' cho thuộc tính 'year'; lồng nhau ngoại lệ là java.lang.IllegalArgumentException:
tôi đã tìm ra cách để thêm biên tập tài sản riêng của tôi, nhưng không bao giờ getValue()
dường như được gọi là
@InitBinder
public void binder(WebDataBinder binder) {
binder.registerCustomEditor(int.class, new CustomIntEditor());
}
public class CustomIntEditor extends PropertyEditorSupport {
tôi nghĩ rằng tôi sẽ có thể trả lại int
giá trị 0
khi tham số năm là bất cứ điều gì khác hơn là một giá trị int
(Integer.parseInt()
-> bắt ngoại lệ)
@Override
public void setAsText(String text) throws IllegalArgumentException {
//Some parsing and error handling
setValue((int)0);
}
Tôi muốn để có thể:
Đặt lĩnh vực này
year
đểint
giá trị0
Tạo một thông báo lỗi tùy chỉnh:
organizer.year.invalid
Có hiệu quả! Tôi nghĩ rằng tôi có thể tìm cách làm cho nó hoạt động chỉ với int – Tommy
Tôi nghĩ rằng những gì bạn đang tìm kiếm ban đầu là 'ConversionService' (' binder.setConversionService (...) '), không phải là' CustomEditor'. Một ConversionService có thể chuyển đổi từ chuỗi thành số nguyên, thiết lập số nguyên thành 0 nếu chuỗi rỗng. Tôi thích sử dụng các loại không nguyên thủy thay vì nó làm cho toàn bộ điều tranh luận :) – pap
Có, Chuyển đổi là tính năng tôi đang tìm kiếm! – Tommy