みなさん、こんにちは。
私はspringmvc3+sitemeshとspringsecurity3を使用しています。次のシナリオを実行する必要があります。バイパスユーザーと通常ユーザーに2つの異なるレイアウトを使用しています。私が従ったアプローチは、ページが2回読み込まれ、同じウィンドウが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"; 正しいレイアウト()でうまく機能していました。しかし、問題はフォームが2回読み込まれ、ポップアップが2回表示されることです。layout.jsp<pattern>/user*</pattern>
使用return "forward:user.html";またはreturn "/user/user";ポップアップが1回だけ表示されるが、レイアウトが間違っている場合。これは、URLパターンのデコレータからキャプチャされず、<pattern>/user*</pattern>間違ったデフォルトのレイアウトが使用されるためです(default.jsp)。
サイトメッシュからではなく、春側から扱うものがあると思います。その中で指導をお願いします。前もって感謝します。