繁体   English   中英

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

[英]Error messages getting lost when using redirect Spring-MVC

我正在基于Spring-MVC的应用程序上工作,需要将最终用户显示错误消息,以防万一在过程中出现问题。这是我正在做的代码

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

我在用户界面中使用标签来显示错误消息,但似乎使用重定向只是删除了我的错误消息。 我是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));
        }
    }

我无法理解您要在此处实现的目标。 但是我想您正在尝试在控制器级别完成验证后显示错误消息,然后希望再次显示相同的表单,但包含错误消息。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM