[英]Spring MVC form validation: how to make field optional?
我有一個表單(Spring 3 MVC項目),我正在使用DTO(數據傳輸對象)進行數據驗證。 數據被發送到控制器,我正在使用BindingResult.hasErrors()
方法和適當的注釋檢查它的有效性。 我將簡化這里,因為我遇到了數字字段的問題。
DTO:
public class Item {
private String discount;
@Digits(integer = 15, fraction = 2)
public String getDiscount() {
return discount;
}
}
如果我提交沒有在discount
字段中寫入的表單, BindingResult.hasErrors()
將返回帶有消息的true
numeric value out of bounds (<15 digits>.<2 digits> expected)
。
我想要實現的是discount
字段可以為空,但如果在其中寫入某些內容,則它應該是@Digits
注釋提供的數字格式。 我怎樣才能做到這一點?
您需要做的是配置Spring以將空String轉換為null 。 您可以通過在FormController initBinder
方法中注冊StringTrimmerEditor
來實現此目的:
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}
然后由parsifal指定, @Digits
Digits將null
值視為valide。
您可以創建自定義驗證注釋。 可以在spring文檔中找到解釋: http ://static.springsource.org/spring/docs/3.0.0.RC3/reference/html/ch05s07.html,par 5.7.2.2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.