3

我有一个在 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 可以帮助我吗?

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

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

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

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

非常感谢!:)

4

1 回答 1

3

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

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

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

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

容易,不是吗?如果您想了解有关 Rewrite 的更多信息,请查看示例配置。如果您有任何问题,请查看论坛

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

于 2013-03-24T09:50:05.067 回答