Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 使用重定向Spring MVC时丢失错误消息_Java_Spring_Spring Mvc - Fatal编程技术网

Java 使用重定向Spring MVC时丢失错误消息

Java 使用重定向Spring MVC时丢失错误消息,java,spring,spring-mvc,Java,Spring,Spring Mvc,我正在开发一个基于SpringMVC的应用程序,需要在最后显示错误消息 如果在这个过程中出现了问题,请用户使用。下面是我正在执行的代码 GlobalMessages.addErrorMessage(model, "facebook.user.accessDenied"); return REDIRECT_PREFIX + "http://localhost:8080/storefront"; 我在UI中使用标记来显示错误消息,但似乎使用重定向只是删除我的错误消息。 我是SpringMVC的新手

我正在开发一个基于SpringMVC的应用程序,需要在最后显示错误消息 如果在这个过程中出现了问题,请用户使用。下面是我正在执行的代码

GlobalMessages.addErrorMessage(model, "facebook.user.accessDenied");
return REDIRECT_PREFIX + "http://localhost:8080/storefront";
我在UI中使用标记来显示错误消息,但似乎使用重定向只是删除我的错误消息。 我是SpringMVC的新手,不确定我做得对还是错

我注意到的一件奇怪的事情是,当重定向URL时,会对

http://localhost:9001/storefront/?errorKey=facebook.user.accessDenied
这是addErrorMessage函数的剩余部分

public static void addErrorMessage(final Model model, final String messageKey)
    {
        addMessage(model, ERROR_MESSAGES_HOLDER, messageKey);
    }

protected static void addMessage(final Model model, final String messageHolder, final String messageKey)
    {
        if (model.containsAttribute(messageHolder))
        {
            final Map<String, Object> modelMap = model.asMap();
            final List<String> messageKeys = new ArrayList<String>((List<String>) modelMap.get(messageHolder));
            messageKeys.add(messageKey);
            model.addAttribute(messageHolder, messageKeys);
        }
        else
        {
            model.addAttribute(messageHolder, Collections.singletonList(messageKey));
        }
    }
publicstaticvoidadderrormessage(最终模型,最终字符串messageKey)
{
addMessage(型号、错误消息\u持有者、消息密钥);
}
受保护的静态void addMessage(最终模型、最终字符串messageHolder、最终字符串messageKey)
{
if(型号containsAttribute(消息持有者))
{
最终映射modelMap=model.asMap();
最终列表messageKeys=newarraylist((List)modelMap.get(messageHolder));
messageKey.add(messageKey);
model.addAttribute(messageHolder、messageKeys);
}
其他的
{
model.addAttribute(messageHolder,Collections.singletonList(messageKey));
}
}

我无法理解您在这里到底想要实现什么。但我猜您正在尝试在控制器级别完成验证后显示错误消息,然后希望再次显示相同的表单,但带有错误消息

我还对您的重定向前缀变量感到困惑。它的价值是什么?? 如果您使用“重定向:”作为其值,那么这就是问题所在。重定向到其他视图时,将不会在表单中显示附加到模型属性的错误消息。您只需指定显示表单的视图名称,spring就会自动显示与模型属性绑定在一起的错误


希望这对你有帮助。干杯。

是的,您是正确的
重定向\u PREFIX=REDIRECT
。我对失去价值也有同样的猜测。在使用
redirect
No时,有没有办法保留这一点?您不应该使用redirect,因为它不会保留您的模型和BindingResult对象。当您重定向时,它将调用控制器以作为您的url进行映射请求映射。我的问题是,我必须将用户发回他/她来自的同一位置,并且根据底层框架结构,无法使用简单视图:(然后您需要找到其他解决方法。:-)这正是我试图找到的,但迄今为止没有取得任何成功:(