Sam*_*mar 7 java validation spring jsp spring-mvc
我想在我的 jsp 页面中显示验证错误。
我的目标是:
public class MyObjectDTO{ @valid private TextDTO text1; @valid private TextDTO text2 }
public class TextDTO{ @NotBlank private String code;@NotBlank private String label;}
Run Code Online (Sandbox Code Playgroud)
我的控制器:
@RequestMapping(value = "/create", method = RequestMethod.POST)
public String creationProjet(@Valid @ModelAttribute MyObjectDTO obj, BindingResult result,
Model model) {
if (result.hasErrors()) {
model.addAttribute("hasErrors", true);
return "create";
} else {
....
return "redirect:/list";
}
}
Run Code Online (Sandbox Code Playgroud)
我的jsp
<div class="col-md-6 form-group ${requestScope['org.springframework.validation.BindingResult.obj'].hasFieldErrors('text1') ? 'has-error' : ''}">
<label class="col-lg-3 control-label">my label</label>
<div class="col-lg-5">
<form:select class="form-control" name="type" path="text1.code" id="selectType">
<option value="">---------</option>
<c:forEach items="${types }" var="type">
<form:option value="${type.id }">
<c:out value=" ${type.code}"></c:out>
</form:option>
</c:forEach>
</form:select>
<form:errors path="text1.code" class="has-error error"></form:errors>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我的控制器重定向到创建页面,但错误未显示。在调试模式下,出现一个错误,指示text1.code不能为空白。
在您的 Jsp 页面中添加以下行
<div class="col-md-6 form-group ${requestScope['org.springframework.validation.BindingResult.obj'].hasFieldErrors('text1') ? 'hasErrors' : ''}">
Run Code Online (Sandbox Code Playgroud)
或hasFieldErrors()改用
<div class="col-md-6 form-group ${requestScope['org.springframework.validation.BindingResult.obj'].hasFieldErrors()}">
Run Code Online (Sandbox Code Playgroud)
和 About addAttributes("hasErrors",true),使用addFlashAttribute()存储在 flashmap 和对象中的内容(在您的情况下,当您导航到创建页面或在两个控制器之间重定向时,错误消息将处于活动状态。)查看此了解更多信息
在你的控制器中添加RedirectAttributes像这样的对象
@RequestMapping(value = "/create", method = RequestMethod.POST)
public String creationProjet(@Valid @ModelAttribute MyObjectDTO obj,
BindingResult result,
RedirectAttributes redirectAtt,
Model model) {
if (result.hasErrors()) {
redirectAtt.addFlashAttribute("hasErrors","ur message");//instead of true you can write your own message
return "create";
} else {
....
}
return "redirect:/list";
}
}
Run Code Online (Sandbox Code Playgroud)
如果您写自己的消息而不是真实的消息
<c:if test="${not empty hasErrors">
<p>${hasErrors}</p>
</c:if>
Run Code Online (Sandbox Code Playgroud)
只有您缺少将部分放入模型地图中。您只放置标志。但你需要输入结果。
if(result.hasErrors()){
mm.addAttribute("errors", result);
return "create";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7232 次 |
| 最近记录: |