Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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:如何在使用AbstractCommandController时显示错误?_Java_Spring_Spring Mvc_Jakarta Ee - Fatal编程技术网

Java SpringMVC:如何在使用AbstractCommandController时显示错误?

Java SpringMVC:如何在使用AbstractCommandController时显示错误?,java,spring,spring-mvc,jakarta-ee,Java,Spring,Spring Mvc,Jakarta Ee,我的控制器中有ajax请求,我的验证非常有效。在控制器中,如果出现故障,我将调用failure jsp页面。唯一的问题是,我不知道如何在failure.jsp页面上向用户输出错误。我显然无法访问spring的表单标签。在这种情况下,您应该做什么 编辑:我真正想知道的是,当我使用AbstractCommandController时,如何访问JSP页面上的绑定错误。您可以检查BindException对象是否存在错误(以及捕获和处理异常),并在Ajax响应中返回有关这些错误的信息。如果您使用的是JS

我的控制器中有ajax请求,我的验证非常有效。在控制器中,如果出现故障,我将调用failure jsp页面。唯一的问题是,我不知道如何在failure.jsp页面上向用户输出错误。我显然无法访问spring的表单标签。在这种情况下,您应该做什么


编辑:我真正想知道的是,当我使用AbstractCommandController时,如何访问JSP页面上的绑定错误。

您可以检查BindException对象是否存在错误(以及捕获和处理异常),并在Ajax响应中返回有关这些错误的信息。如果您使用的是JSON,那么可以将错误信息列表与“errors”键配对。前端需要检查并显示这些错误。

我过去所做的是使用HTTP头将消息发送回AJAX请求者(XMLHTTPRequest对象)。通过这种方式,您将无法获得完整的绑定和验证支持,但这是传递消息的一种简单方式

另一个选项将为您提供Spring绑定和验证的全部功能,如下所示。我假设您正在通过AJAX提交表单。您可以执行标准的spring绑定和验证,并且在出现错误的情况下,将表单发回并替换为问题输入旁边的异常消息。通过这种方式,您可以充分利用Spring绑定和验证的强大功能,同时获得所需的AJAX功能。这将要求您将表单分离到一个单独的JSP页面中,这样您就可以在AJAX提交和出错时返回该表单

作为对评论的回应


我的问题是如何访问 如果我正在使用 抽象的命令控制器。AJAX 在这个世界上不是很重要吗 方程式我只是不想用电话 formController,因为它没有 理智

我认为您可以简单地在模型中设置一个变量,如下所示:

ModelAndView.addObject(this.getCommandName(), errors)
这将在AbstractCommandController中完成

protected abstract ModelAndView handle(
        HttpServletRequest request,
        HttpServletResponse response,
        Object command,
        BindException errors)
    throws Exception
方法。确保model属性的名称是命令的名称(在setCommandName方法中设置)


这是未经测试且来自内存的。

我该如何检查bindException对象?我想我要问的不是如何在控制器中解决这个问题,而是如何让视图访问bind对象。我不确定这个控制器是否支持它。据我所知,您不能直接给视图绑定对象,您必须手动映射它——使用BindException创建一个错误列表(以您选择的任何格式),客户端可以处理和显示这些错误。在过去,我在响应JSON中添加了一对,带有一个“errors”键和一个发生的所有错误的值列表。我的问题是,如果我使用AbstractCommandController,如何从JSP访问BindingErrors。Ajax在等式中并不是那么重要。我只是不想使用formController,因为它没有意义。如果你能回答这个问题,那么我会给你这个问题的正确答案。很抱歉,这花了很长时间才批准,但你在这里。回答得好,先生。