0

我正在开发一个基于 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));
        }
    }
4

1 回答 1

0

我无法理解您究竟想在这里实现什么。但我猜你试图在控制器级别完成验证后显示错误消息,然后想再次显示相同的表单但有错误消息。

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

希望这对您有所帮助。干杯。

于 2012-05-31T09:34:42.597 回答