2011-11-08 67 views
0

我使用urlrewriteFilterorg.tuckey.web.filters.urlrewrite.UrlRewriteFilter)將www.mysite.com/myname等頁面轉發到Struts2操作。該操作已映射到sitemesh中,並且正常工作。Sitemesh對於相同的URL不同的裝飾器

但現在我想要保持相同的URL,但應用另一個裝飾器到頁面,根據用戶是否登錄。

我正在使用AppFuse-stack Struts2。

回答

0

好的 - 因爲沒有其他人看起來像走了。

Sitemesh根據傳入的url字符串選擇裝飾器,因此根據客戶端的登錄狀態,需要使用不同的裝飾器來使用不同的URL。 AFAIK Sitemesh使用整個Url字符串,因此它包含參數,因此您可能會忽略追加?loggedIn =「true」或?loggedIn =「false」,並將裝飾器映射到此處。但是這對POST請求沒有幫助。

另一種方法是創建兩個Struts包 - 一個用於登錄用戶,另一個用於匿名用戶,這樣您的操作將具有不同的路徑,然後映射到Url的路徑部分。

我不知道你的場景中這可能有多實用,但第三種選擇可能有一個通用的裝飾器,並通過單獨的樣式表來控制佈局,你可以通過jsp中的測試來控制樣式表。

HTH Regards

相關問題