我使用urlrewriteFilter
(org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
)將www.mysite.com/myname
等頁面轉發到Struts2操作。該操作已映射到sitemesh中,並且正常工作。Sitemesh對於相同的URL不同的裝飾器
但現在我想要保持相同的URL,但應用另一個裝飾器到頁面,根據用戶是否登錄。
我正在使用AppFuse-stack Struts2。
我使用urlrewriteFilter
(org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
)將www.mysite.com/myname
等頁面轉發到Struts2操作。該操作已映射到sitemesh中,並且正常工作。Sitemesh對於相同的URL不同的裝飾器
但現在我想要保持相同的URL,但應用另一個裝飾器到頁面,根據用戶是否登錄。
我正在使用AppFuse-stack Struts2。
好的 - 因爲沒有其他人看起來像走了。
Sitemesh根據傳入的url字符串選擇裝飾器,因此根據客戶端的登錄狀態,需要使用不同的裝飾器來使用不同的URL。 AFAIK Sitemesh使用整個Url字符串,因此它包含參數,因此您可能會忽略追加?loggedIn =「true」或?loggedIn =「false」,並將裝飾器映射到此處。但是這對POST請求沒有幫助。
另一種方法是創建兩個Struts包 - 一個用於登錄用戶,另一個用於匿名用戶,這樣您的操作將具有不同的路徑,然後映射到Url的路徑部分。
我不知道你的場景中這可能有多實用,但第三種選擇可能有一個通用的裝飾器,並通過單獨的樣式表來控制佈局,你可以通過jsp中的測試來控制樣式表。
HTH Regards