Spring MVC 3使用sitemesh重定向/转发

时间:2011-03-15 15:25:19

标签: java spring-mvc sitemesh

问候所有人,

我正在使用spring mvc 3 + sitemesh和spring security 3.我需要做以下场景。 我正在为绕过用户和普通用户使用2种不同的布局。我遵循的方法工作正常,直到我遇到一些JavaScript弹出窗口,因为我注意到页面加载两次并弹出相同的窗口两次。请验证我的方法。

控制器类 -

    @RequestMapping(value = "/mainMenu")
    public class PortalController {

     @RequestMapping(method = RequestMethod.GET)
    public String byPassPortal() {

    if (User.bypassMenu()) {
         //return "redirect:user.html";
         //return "forward:user.html";
         return "/user/user";
    } else {
        // send user to the portal page
        logger.debug("Redirect to the main page");
        return "mainMenu";
    }
    }
}

网站网格装饰xml -

<decorators defaultdir="/decorators">
<decorator name="layout" page="layout.jsp">
    <pattern>/user*</pattern>
</decorator>
<decorator name="default" page="default.jsp">
    <pattern>/*</pattern>
</decorator>
</decorators>

这是我的观察 - 如果我使用return "redirect:user.html";&amp; return "forward:user.html";它为用户提供了正确的布局(layout.jsp),因为decorator将通过模式<pattern>/user*</pattern>捕获它。但问题是表格将加载两次,我得到弹出两次。

如果我使用return "forward:user.html";return "/user/user";弹出窗口只会出现一次,但布局错误。因为它不会从装饰器中捕获到url模式<pattern>/user*</pattern>而且它会使用错误的默认布局(default.jsp)。

我认为有一些东西可以从春天来处理,而不是从sitemesh处理。你可以在这方面给一些指导吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。这与spring或sitemesh无关。这是关于我正在使用的第二个布局。它包含两个''标签,并由sitemesh提交两次。希望这对任何有这种错误的人都有帮助。 - Sam 0秒前编辑