1

みなさん、こんにちは。

私は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)。

サイトメッシュからではなく、春側から扱うものがあると思います。その中で指導をお願いします。前もって感謝します。

4

1 に答える 1

0

私は問題を見つけました。春やサイトメッシュとは何の関係もありませんでした。それは私が使っていた2番目のレイアウトに関するものでした。2つの''タグが含まれており、sitemeshによって2回送信されました。これが、この種のエラーが発生した人に役立つことを願っています。–サム0秒前編集

于 2011-03-22T14:29:52.497 に答える