spring - 如何在spring MVC的同一页面上显示错误消息

标签 spring jsp spring-mvc

我正在使用表单数据调用 spring mvc 中的 Controller 。

在保存之前,我会检查 id 是否在某个范围内。如果id不在范围内,我需要在同一页面上显示一条消息说The id selected is out of Range, please select another id within range .

我在互联网上找到了一些示例,如果出现任何问题,我可以重定向到失败的 jsp。但是在我的情况下怎么做呢?

@RequestMapping(value = "/sendMessage")
public String sendMessage(@ModelAttribute("message") Message message,
        final HttpServletRequest request) { 
    boolean check = userLoginService.checkForRange(message.getUserLogin());
    if(!check){
        return "";  //What Should I do here??????
    }
}

最佳答案

一种简单的方法是将您的错误消息添加为模型属性。

@RequestMapping(value = "/sendMessage")
public String sendMessage(@ModelAttribute("message") Message message,
        final HttpServletRequest request, Model model) {

    boolean check = userLoginService.checkForRange(message.getUserLogin());
    if(!check){
        model.addAttribute("error", "The id selected is out of Range, please select another id within range");
        return "yourFormViewName";
    }
}

然后您的 jsp 可以显示“错误”属性(如果存在)。
<c:if test="${not empty error}">
   Error: ${error}
</c:if>

编辑

这是一个粗略的、未经测试的 ajax 验证实现。 JQuery 假设。

为 ajax 添加一个请求映射来命中:
@RequestMapping("/validate")
@ResponseBody
public String validateRange(@RequestParam("id") String id) {

    boolean check = //[validate the id];
    if(!check){
        return "The id selected is out of Range, please select another id within range";
    }
}

拦截客户端提交的表单并验证:
$(".myForm").submit(function(event) {

    var success = true;

    $.ajax({
        url: "/validate",
        type: "GET",
        async: false, //block until we get a response
        data: { id : $("#idInput").val() },
        success: function(error) {
            if (error) {
                $("#errorContainer").html(error);
                success = false;
            }
        }
    });

    return success;

});

关于spring - 如何在spring MVC的同一页面上显示错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22664533/

相关文章:

java - 请求处理失败;嵌套异常是 java.lang.NumberFormatException : For input string: ""

ajax - responseText 包含额外的空白字符(换行,换行),如何在 jsp 中防止和删除它们?

validation - Spring 框架 <form :errors/> tag not showing errors

java - 如何更新正在运行的 Tomcat 应用程序中的资源并保持 session 完整

java - 如何从传递给 Thymeleaf 的模型中调用 getters 之类的参数?

java - Java 中的一些方法或现有设计模式可防止因参数检查而出现大量 if/else 条件

java - Docker/Marathon 上的 Spring Boot 数组环境变量

java - Spring Cloud : How to define default fallback for Hystrix in Zuul gateway?

java - 将 Spring Webflow 从 1.0.6 升级到 2.3

java - 从数据库中删除记录的 Controller 方法应采用哪些参数?