1

大家好,

我正在使用 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";&return "forward:user.html"; 它为用户使用正确的布局 ( layout.jsp) 可以正常工作,因为装饰器会通过模式捕获它<pattern>/user*</pattern>。但问题是表单会加载两次,我会弹出两次。

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

我认为有一些东西需要从弹簧侧而不是从站点网格处理。您能在这方面提供一些指导吗?先感谢您。

4

1 回答 1

0

我发现了问题。与 spring 或 sitemesh 无关。这完全是关于我使用的第二种布局。它包含两个“”标签,并由站点网格提交了两次。希望这对任何遇到这种错误的人有所帮助。– Sam 0 秒前 编辑

于 2011-03-22T14:29:52.497 回答