我有一个带有JSP视图页面的Spring MVC web应用程序。用户在某些输入字段中输入值,上传一些文件,单击Submit,输入和文件将发送到后端,并在浏览器中生成并下载输出文件。
输入数据的后端验证可能会导致错误,在这种情况下,我当前重定向到一个单独的中央错误页面,该页面显示错误消息。现在,当用户在浏览器中按下后退按钮时,他将被发送到带有空表单的页面,并且需要重新填充所有数据并附加所有文件。
我尝试通过在出错时重新构建同一页来维护状态,并使用输入的输入填充表单,在<div>的底部显示错误。这很有效,但这需要为网站上可能有后端验证错误的每个页面创建一个单独的页面。我还遇到了choose file按钮的问题,因为在重新构建页面时,它们不会链接到用户系统上的文件。
在Spring MVC中维护状态的跨浏览器兼容方式是什么?有没有更好的方法在同一页上显示错误而不重建它?
总的来说,我是Spring MVC和Web开发的新手。如有任何建议,欢迎光临。提前谢谢。
发布于 2020-12-04 19:01:24
了解Ajax通信将是一件好事。如果只传递验证结果,则表单的异步通信不需要重新加载屏幕。它还将为用户提供便利。
发布于 2020-12-06 01:41:07
这可能有点麻烦,但您可以向HttpSession对象添加一个消息属性,以便在各种RequestMapping中检索它,并在需要时将其添加到Model对象中。如下所示:
    @RequestMapping("/example")
    public String example(HttpSession httpSession) {
//        You probably want something more dynamic but this is the general idea
        httpSession.setAttribute("errorMessage", "There was an error");
        return "example";
    }然后,在错误处理程序中,您可以检索消息并将其添加到模型中,如下所示:
 @RequestMapping("/error")
    public String error(@SessionAttribute("errorMessage") String errorMessage, Model model) {
        model.addAttribute("message", errorMessage);
        return "error";
    }https://stackoverflow.com/questions/65141056
复制相似问题