![](/img/trans.png)
[英]Spring - How to remove a `FieldError` from a BindingResult?
[英]Spring form input value get lost when manually add FieldError into bindingResult
我在Spring MVC中有一個Web控制器:
@RequestMapping("/")
public String create(@Valid @ModelAttribute Device device, BindingResult bindingResult) {
return getDefaultView();
}
jsp視圖:
<form:form role="form" commandName="device">
<form:input path="name" class="form-control"/>
<form:errors path="name" cssClass="text-danger"/>
<button type="submit">Submit</button>
</form:form>
假設我的Device類只有一個屬性名稱 。 我要驗證它(示例長度> = 5)
public class DeviceDTO {
@Size(min = 5)
String name;
//getter & setter..
}
運行此命令后,我在名稱字段中輸入字符串“ abc”,然后提交,該表單將顯示為:
我們可以看到有舊值和錯誤消息。 但是在某些情況下,我想使用自己的條件進行手動驗證(注釋無法處理),我刪除了@Size注釋並按如下方式更改控制器:
@RequestMapping("/")
public String create(@Valid @ModelAttribute Device device, BindingResult bindingResult) {
if(device.getName().length() < 6)
bindingResult.addError(new FieldError("device", "name", "custom error"));
return getDefaultView();
}
但是現在,當我提交帶有“ abc”值的表單時,會顯示我的自定義錯誤,但不會顯示名稱字段的舊值
但是,如果我直接使用$ {device.name},它仍然顯示“ abc”值。
請嘗試以下代碼:
@RequestMapping("/")
public String create(@Valid @ModelAttribute Device device, BindingResult bindingResult) {
if(device.getName().length() < 6)
bindingResult.addError(new FieldError("device", "name",device.getName(), false, null, null, "custom error"));
return getDefaultView();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.