当前位置: 首页 > 知识库问答 >
问题:

如何在spring mvc中显示jsp中的验证错误

百里鸿祯
2023-03-14

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

我的控制器重定向到页面创建,但没有显示错误。在调试模式下,有一个错误指示文本1。代码不能为空。

共有2个答案

廉鸿运
2023-03-14

只有你缺少的是模型地图的一部分。你只放了标志。但是你需要放结果。

if(result.hasErrors()){             
    mm.addAttribute("errors", result);
    return "create";
}
章玮
2023-03-14

在您的Jsp页面中添加以下行

<div class="col-md-6 form-group ${requestScope['org.springframework.validation.BindingResult.obj'].hasFieldErrors('text1') ? 'hasErrors' : ''}">

或者改用hasFieldError()

<div class="col-md-6 form-group ${requestScope['org.springframework.validation.BindingResult.obj'].hasFieldErrors()}">

关于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>
 类似资料:
  • 有一张Zend登记表。输入用户名、电子邮件、密码和确认密码。电子邮件验证程序如下所示: 有4个验证器:必需类型、电子邮件格式以及数据库中是否有人具有以下电子邮件。错误消息如下:-需要电子邮件-电子邮件地址格式无效-电子邮件地址已存在 尝试使用ajax捕获错误消息和输出时出现问题。在具有以下功能的RegisterController中: 和jQuery文件: 在控制台我得到了这样的东西https:/

  • 本文向大家介绍SpringMVC Validator验证示例,包括了SpringMVC Validator验证示例的使用技巧和注意事项,需要的朋友参考一下 SpringMVC服务器验证一种是有两种方式,一种是基于Validator接口,一种是使用Annotaion JSR-303标准的验证,下面主要是学习这两种,工作中推荐后者,方便很多 一.基于Validator接口的验证. 首先创建User实例

  • 我已经写了一个jsp页面来显示pdf的内容,但是最终在jsp中使用了ascii代码。我想在jsp中显示pdf的内容。我错过了什么部分。当我试图在pdf中写入读取的内容时,它只显示ascii值,而不是可读的格式

  • 问题内容: 我有一个表格,如果单击“提交”,则需要显示验证错误消息。 这是一个工作的家伙 用户开始进行更改时,验证工作正常。但是它不会显示任何错误消息。如果单击“提交”而不输入任何内容。 有实现这个的想法吗?或者以其他方式如何在单击“提交”按钮时使每个输入字段$ dirty 问题答案: 我在http://jsfiddle.net/thomporter/ANxmv/2/上找到了这个小提琴,它巧妙地进

  • 我有一个简单的网络界面,在这里我可以为交易所的个人加密货币交易选择特定的市场、价格、目标和止损点。 我添加了一些默认的laravel验证规则,其中一些显示在Web界面上,就像它们应该的那样,但其中一个特别是在它确实触发时没有,因为当我检查错误时,它确实显示在响应中。 在这里,表单显示错误,除了在停顿部分,但停顿错误没有显示在网络界面上: 我已经简化了规则,只有“要求”用于测试目的,也有更多的规则它