Sitemesh 相同 URL 的不同装饰器

发布于 2024-12-14 11:54:24 字数 277 浏览 1 评论 0原文

我正在使用 urlrewriteFilter (org.tuckey.web.filters.urlrewrite.UrlRewriteFilter) 转发诸如 www.mysite.com/myname 之类的页面到 Struts2 操作。该操作已映射到 sitemesh 中,并且可以正常工作。

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

我正在使用 AppFuse-stack Struts2。

I'm using urlrewriteFilter (org.tuckey.web.filters.urlrewrite.UrlRewriteFilter) to forward pages like www.mysite.com/myname to a Struts2 action. The action is mapped up in sitemesh, and it works properly.

But now I want to keep the same URL but apply another decorator to the page, based on whether the user is logged in or not.

I'm using AppFuse-stack Struts2.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清泪尽 2024-12-21 11:54:24

好吧——因为看起来没有人愿意尝试。

Sitemesh 根据传入的 url 字符串选择装饰器,因此要使用不同的装饰器,您需要不同的 url,具体取决于客户端的登录状态。 AFAIK Sitemesh 使用整个 Url 字符串,因此其中包含参数,因此您可能无需附加 ?loggedIn="true" 或 ?loggedIn="false" 并将装饰器映射到此字符串上。然而,这对 POST 请求没有帮助。

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

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

华泰
问候

Ok - since no-one else looks like having a go.

Sitemesh selects the decorators based on the incoming url string, so to have different decorators you need different urls depending on the login status of your client. AFAIK Sitemesh uses the entire Url string so this includes parameters so you might get away with appending ?loggedIn="true" or ?loggedIn="false" and map the decorators on this. However this doesn't help with POST requests.

Another way to do it would be to create two Struts packages - one for logged in users and one for anonymous users so your actions will have different paths and then map on the path part of the Url.

I don't know how practical this might be in your scenario, but a third option maybe to have one common decorator and control the layout via seperate stylesheets which you could control via a test in your jsp.

HTH
Regards

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文