大家好,
我正在使用 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
)。
我认为有一些东西需要从弹簧侧而不是从站点网格处理。您能在这方面提供一些指导吗?先感谢您。