java—在SpringMVC的当前视图中显示后端生成的错误

aydmsdu9  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(196)

我有一个带有jsp视图页的springmvcweb应用程序。用户在某些输入字段中输入值,上载一些文件,然后单击 Submit ,输入和文件被发送到后端,输出文件被生成并在浏览器中下载。
对输入数据进行后端验证可能会导致错误,在这种情况下,我当前会重定向到一个单独的中心错误页,其中显示错误消息。现在,当用户按下浏览器中的“后退”按钮时,他将被发送到带有空表单的页面,并需要重新填充所有数据和附加所有文件。
我试图通过在出现错误时重建同一个页面来维护状态,并用输入的内容填充表单,将错误显示在表单的底部 <div> . 这很好,但这需要为网站上可能有后端验证错误的每个页面创建一个单独的页面。我也面临着这个问题 choose file 按钮,因为在重建页面时,它们不会链接到用户系统上的文件。
在springmvc中,跨浏览器兼容的状态维护方式是什么?有没有更好的方法在同一页上显示错误而不重建错误?
一般来说,我对springmvc和web开发还不熟悉。如有任何建议,我们将不胜感激。提前谢谢。

mum43rcc

mum43rcc1#

了解ajax通信是一件好事。如果只传递验证结果,则窗体的异步通信不需要重新加载屏幕。它还将为用户提供便利。

pokxtpni

pokxtpni2#

这可能是一个有点黑客,但您可以添加一个消息属性到您的 HttpSession 对象在不同的 RequestMapping s、 并将其添加到 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";
    }

相关问题