我正在使用urlrewriteFilter
( org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
) 将页面转发www.mysite.com/myname
到 Struts2 操作。该操作在站点网格中映射,并且可以正常工作。
但是现在我想保留相同的 URL,但根据用户是否登录,将另一个装饰器应用于页面。
我正在使用 AppFuse-stack Struts2。
我正在使用urlrewriteFilter
( org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
) 将页面转发www.mysite.com/myname
到 Struts2 操作。该操作在站点网格中映射,并且可以正常工作。
但是现在我想保留相同的 URL,但根据用户是否登录,将另一个装饰器应用于页面。
我正在使用 AppFuse-stack Struts2。
好的 - 因为没有其他人看起来像一展身手。
Sitemesh 根据传入的 url 字符串选择装饰器,因此要拥有不同的装饰器,您需要根据客户端的登录状态使用不同的 url。AFAIK Sitemesh 使用整个 Url 字符串,因此这包括参数,因此您可以通过附加 ?loggedIn="true" 或 ?loggedIn="false" 并在此上映射装饰器。但是,这对 POST 请求没有帮助。
另一种方法是创建两个 Struts 包 - 一个用于登录用户,一个用于匿名用户,因此您的操作将具有不同的路径,然后映射到 Url 的路径部分。
我不知道这在您的场景中有多实用,但第三种选择可能是拥有一个通用装饰器并通过单独的样式表控制布局,您可以通过 jsp 中的测试来控制这些样式表。
HTH 问候