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

时间:2012-05-31 07:53:29

标签: java spring spring-mvc

我正在开发基于Spring-MVC的应用程序,需要向最后显示错误消息 用户万一在这个过程中出现问题。我正在做的一段代码

GlobalMessages.addErrorMessage(model, "facebook.user.accessDenied");
return REDIRECT_PREFIX + "http://localhost:8080/storefront";

我在UI中使用标签来显示错误消息,但似乎使用重定向只是删除我的错误消息。 我是Spring-MVC的新手,不确定我是做对还是错。

我注意到的一个奇怪的事情是,重定向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));
        }
    }

1 个答案:

答案 0 :(得分:0)

我无法理解你在这里想要达到的目的。但我想你试图在控制器级别完成验证后显示错误消息,然后想再次显示相同的表单但是有错误消息。

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

希望这会对你有所帮助。欢呼声。