Sitemesh用于相同URL的不同装饰器

时间:2011-11-08 08:43:29

标签: spring url-rewriting struts2 sitemesh appfuse

我正在使用urlrewriteFilterorg.tuckey.web.filters.urlrewrite.UrlRewriteFilter)将www.mysite.com/myname之类的网页转发到Struts2操作。该操作已在sitemesh中映射,并且可以正常运行。

但是现在我想保留相同的URL,但根据用户是否登录,将另一个装饰器应用于页面。

我正在使用AppFuse-stack Struts2。

1 个答案:

答案 0 :(得分:0)

好的 - 因为没有其他人看起来像是去了。

Sitemesh根据传入的url字符串选择装饰器,因此根据客户端的登录状态,为了拥有不同的装饰器,您需要不同的URL。 AFAIK Sitemesh使用整个Url字符串,因此这包含参数,以便您可以附加?loggedIn =“true”或?loggedIn =“false”并在此处映射装饰器。但是这对POST请求没有帮助。

另一种方法是创建两个Struts包 - 一个用于登录用户,一个用于匿名用户,因此您的操作将具有不同的路径,然后映射到Url的路径部分。

我不知道你的场景可能有多实用,但第三种选择可能是有一个共同的装饰器并通过单独的样式表来控制布局,你可以通过jsp中的测试来控制它。

HTH 此致

相关问题