2010-09-02 33 views
11

Trong bối cảnh mùa xuân Webflow 2.0.x ......mùa xuân "typemismatch" và các trường bắt buộc

tôi xử lý ràng buộc "typemismatches" hình thức, ví dụ như là kết quả của cố gắng để ánh xạ một String vào một Integer , bằng cách sử dụng thông tin sau trong số messages.properties

typeMismatch={0} contains invalid data. 

Điều này có hiệu quả.

Vấn đề là nếu trường xảy ra lỗi typeMismatch là "bắt buộc" thì tôi cũng nhận được lỗi cho trường bắt buộc bị thiếu, hợp lý tôi đoán vì giá trị được gửi không bao giờ bị ràng buộc. ("Bắt buộc" được xác định trong tệp XML Xác thực của Commons)

Vì vậy, tôi không muốn thấy trường thông báo lỗi "XXX là trường bắt buộc" khi trường chỉ bị thiếu do loạiMatchatch. Làm cách nào để giải quyết vấn đề này? Tôi nghĩ về trọng initBinder() trên FormAction nhưng nhanh chóng nhận được đâu .....

+1

Bất kỳ sự tiến bộ về vấn đề này? Tôi hiện đang chiến đấu với cùng một vấn đề. –

+0

Bạn có thể đăng một ví dụ về dự án nhỏ không? –

Trả lời

1

Bạn có nhiều lựa chọn, theo thứ tự ưu tiên:

  • Đặt một cách chọn lọc thông điệp typeMismatch.target.yourFieldName hoặc typeMismatch.int tài nguyên tệp

  • Triển khai own Validator để bạn có thể gửi tin nhắn chuyên dụng khi phân tích cú pháp Integer sẽ thất bại trước bước ràng buộc

  • Tạo một BindingErrorProcessor để xử lý khác nhau kind of parsing issues

+0

Điều này có giải quyết được vấn đề không hiển thị hai thông báo lỗi không? – mico

+0

Một cấu hình chuỗi bình thường là trình xác nhận đầu tiên và sau đó ràng buộc. Có thể máy của bạn đã được chuyển. –

+0

Trình xác thực đã sử dụng tài nguyên "bắt buộc" cho thư của họ –

2

Giống như Yves đã đề cập, một trong những ba cách tiếp cận, tôi đã sử dụng một phương pháp tùy chỉnh validator và nó rất dễ dàng. Bạn có thể sử dụng trình xác thực tùy chỉnh để kiểm tra xem trường biểu mẫu đã có thông báo lỗi xml của yêu cầu chưa. Nếu trường không có lỗi, bạn có thể kiểm tra xác thực chuỗi của mình. Bằng cách đó nó sẽ chỉ hiển thị một.

Phương pháp khác mà bạn có thể sử dụng là thử xác thực xml nhiều lần, một yêu cầu và mặt còn lại là mặt nạ kiểm tra biểu thức chính quy cụ thể. Trong trường hợp của bạn nếu trường của bạn là một trường số nguyên, thì bạn có thể đi và thực hiện một mặt nạ với kiểm tra regex chỉ cho các số. Thứ tự của mặt nạ, bắt buộc hoặc yêu cầu, mặt nạ trong xml quyết định thông điệp nào nhận được sở thích cao hơn.

Ví dụ:

<field property="somefield" depends="required,mask" page="2"> 
<arg key="somelabel"/> 
<var> 
    <var-name>mask</var-name> 
    <var-value>${somepattern}</var-value> 
</var> 
</field> 
Các vấn đề liên quan