Tôi đã nghiên cứu cẩn thận Jonik's entry về tùy chỉnh định dạng BigDecimal trong Wicket. Cảm ơn vì đoạn mã tuyệt vời này. Thật không may tôi không thể làm cho nó hoạt động cho trường hợp sử dụng của tôi.Đăng ký toàn cầu định dạng trường trong Wicket
Tôi muốn đăng ký định dạng ngày tháng trên toàn cầu và đang sử dụng đoạn mã sau trong subclass Ứng dụng:
@Override
protected IConverterLocator newConverterLocator() {
ConverterLocator converterLocator = new ConverterLocator();
converterLocator.set(Date.class, new DateConverter() {
@Override
public DateFormat getDateFormat(Locale ignore) {
return new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
}
});
return converterLocator;
}
Sau đó, khi sử dụng trường ngày trong các trang web mã là như sau:
form.add(new TextField<Date>("dateField"));
Khi được hiển thị, các trường ngày tháng hiển thị định dạng chuẩn java.text.DateFormat.SHORT
(02.11.11 11:59) đến từ lớp org.apache.wicket.util.convert.converter.DateConverter
thay vì tùy chỉnh SimpleDateFormat của tôi (02.11.2011 11:59:42).
Tôi đã kiểm tra xem java.util.Date có đang được sử dụng trong suốt không. Phiên bản Wicket là 1.4.12.
Bất kỳ ý tưởng nào?
Tính năng này hoạt động tốt trong phiên bản 1.4.12, sử dụng TextField mới ("dateField", Mô hình mới (new Date())). Mô hình của TextField là gì? Nếu Biểu mẫu có một CompoundPropertyModel, lớp nào là thuộc tính dateField xử lý thành? –
Cảm ơn Xavi. Biểu mẫu là một 'CompoundPropertyModel' đề cập đến một thực thể persistence có' dateField' là java.util.Date. Vì chúng ta đang sử dụng các thực thể bền vững, các trường ở cuối các chuỗi getter/setter là các kiểu dữ liệu Java thô, chứ không phải các triển khai thực hiện của IModel. Đây có phải là vấn đề không? –
Bạn có chắc chắn rằng 'newConverterLocator()' đang được sử dụng không? Bạn đã sửa lỗi thông qua 'Component.getConverter (Class)' để xem những gì đang xảy ra? Bạn có thể làm điều này dễ dàng đặt một điểm ngắt trong ghi đè trong thành phần cụ thể này. –