Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SpringMVC中显示jsp中的验证错误_Java_Spring_Validation_Jsp_Spring Mvc - Fatal编程技术网

Java 如何在SpringMVC中显示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 =

我想在我的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 = 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>