【问题标题】:Pretty URLs for JSF resources (CSS, JS, images) using PrettyFaces使用 PrettyFaces 的 JSF 资源(CSS、JS、图像)的漂亮 URL
【发布时间】:2013-03-13 06:47:57
【问题描述】:

我有一个在 Glassfish 3.1.2.2 上运行的 web 应用程序,它使用 JSF 2.1 (Mojarra) 和 PrettyFaces 3.3.3 来促进将“漂亮”的 REST 样式 URL 与我的应用程序集成的任务。

但是,查看生成的 html 代码,我发现我的应用程序资源的路径相当“丑陋”。像这样:

<script type="text/javascript" src="/HelloWorld/faces/javax.faces.resource/js/jquery-1.9.1.min.js">

特别是faces/javax.faces.resource/ 部分伤害了我的眼睛。按照 PrettyFaces 的主要思想,我想删除这部分。

是否可以拦截这些 URL 的生成,PrettyFaces 可以帮我解决这个问题吗?

我正在使用 &lt;h:outputScript name="js/jquery-1.9.1.min.js" /&gt;&lt;h:outputStylesheet name="css/app.css" /&gt;&lt;h:graphicImage name="img/logo.png" /&gt; 在我的 JSF-Servlet 中包含资源引用。

编辑:我想我必须做两件事?

  • 一:将/img/* 之类的请求映射到它们的实际位置/faces/javax.faces.resource/img/*
  • 二:挂钩到 &lt;h:graphicImage /&gt; 元素(和其他元素)的 URL 生成。

如果你能给我一些关于从哪里开始的指示,我会很高兴。我对 JSF 很陌生。

非常感谢! :)

【问题讨论】:

  • 这个要求的动机是什么?
  • 我知道你的意思@Luiggi。这更像是一个“软”的要求。我想让我的网址漂亮,即使是指向资源的网址。我认为这个/HelloWorld/img/logo.png/HelloWorld/resources/img/logo.png 看起来比/HelloWorld/faces/javax.faces.resource/img/logo.png 更好。
  • 您可能会觉得这很有帮助:stackoverflow.com/questions/14963756/…
  • 谢谢,这个线程和从那里链接的其他线程非常有用。似乎是一项不平凡的任务;)我将按照@chkal 的建议看一下 Rewrite。
  • 隐藏javax.faces.resource 也是一个安全问题。

标签: jsf url-rewriting prettyfaces


【解决方案1】:

不幸的是,使用 PrettyFaces 实现这样的要求非常困难。这就是我们决定启动 Rewrite 的原因之一,它是 PrettyFaces 的继任者。

使用 Rewrite 很容易做这样的事情。您只需添加一个连接规则,将您希望看到的路径转换为您的应用程序当前使用的路径。

您的要求可以通过以下方式实现:

.addRule(Join.path("/js/{file}").to("/faces/javax.faces.resource/js/{file}"))

很简单,不是吗?如果您想了解有关 Rewrite 的更多信息,请查看 examples configurations。如果您有任何问题,请查看forums

即将发布的 Rewrite 2.0.0.Final 带来了一些不错的改进。特别是 PrettyFaces 的向后兼容模块,如果您想用 Rewrite 替换 PrettyFaces,它允许您重用当前的 PrettyFaces 配置。

【讨论】:

  • 谢谢,我会深入了解 Rewrite。这看起来很有趣!
猜你喜欢
  • 2015-02-28
  • 2017-07-29
  • 1970-01-01
  • 2016-05-09
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
相关资源
最近更新 更多