Java 如何在SpringMVC中显示jsp中的验证错误
我想在我的jsp页面中显示验证错误 我的目标是:Java 如何在SpringMVC中显示jsp中的验证错误,java,spring,validation,jsp,spring-mvc,Java,Spring,Validation,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;} 我的控制器: @RequestMapping(value = "/create", method =
public class MyObjectDTO{ @valid private TextDTO text1; @valid private TextDTO text2 }
public class TextDTO{ @NotBlank private String code;@NotBlank private String label;}
我的控制器:
@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";
}
}
我的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>
我的标签
---------
我的控制器重定向到页面创建,但没有显示错误。在调试模式下,有一个错误指示
text1。code
不能为空 只有您缺少的部分被放入模型映射。您正在放入唯一标志。但你需要把结果放进去
if(result.hasErrors()){
mm.addAttribute("errors", result);
return "create";
}
在Jsp页面中添加以下行
<div class="col-md-6 form-group ${requestScope['org.springframework.validation.BindingResult.obj'].hasFieldErrors('text1') ? 'hasErrors' : ''}">
关于addAttributes(“hasErrors”,true)
,使用存储在flashmap和Object中的addFlashAttribute()
(在您的情况下,当您导航到创建页面或在两个控制器之间重定向时,错误消息将处于活动状态。)
在控制器中添加如下对象
@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";
}
}
如果你写你自己的信息而不是真的
<c:if test="${not empty hasErrors">
<p>${hasErrors}</p>
</c:if>
${hasErrors}
在我的jsp中,我不使用这个标志mm.addAttribute(“errors”,result)代码>它不是标志。它包含所有绑定结果集合。请尝试并让我知道。我同意您的意见,但当我们在模型中使用此mm.addAttribute(“错误”,结果)放置某些内容时代码>我们应该在页面中阅读它,但我使用``和它对非复杂对象的工作我的表单以:
开始,我在jsp
中使用了它,而在我的页面中,我没有使用它来阅读模型中的属性,我使用了这个
<c:if test="${not empty hasErrors">
<p>${hasErrors}</p>
</c:if>