【问题标题】:How to create user-friendly and seo-friendly urls in jsf?如何在 jsf 中创建用户友好和 seo 友好的 url?
【发布时间】:2010-12-27 15:06:05
【问题描述】:

例如,我有一个带有方法getTitle ()getContent () 的文章类。

我也有带有方法getAllArticles () 的ArticlesService。如何创建具有有意义名称的链接列表(由#{article.title} 组成)?喜欢:

http://mysiteaddress.com/article/first-article-title
http://mysiteaddress.com/article/how-to-make-links-in-jsf

..或类似的东西。

我可以使用 <h:commandLink> 创建具有所有必要功能的链接,但我不知道如何为它制作漂亮的“href”:它总是有 href '#'。

我可以使用<h:outputLink> 创建漂亮的链接,但我不知道如何为其添加必要的功能。


在 jsp 中,我创建了自己的前端控制器,它从请求中解析 url,然后重定向到对应的 jsp 页面。

如何在 JSF 中实现同样的功能?

【问题讨论】:

    标签: jsp jsf friendly-url front-controller


    【解决方案1】:

    如果这是为了改进现有应用程序,那么您基本上需要一个Filter 来检测“脏”和“友好”URL。当它检测到“脏” URL 时,它应该将请求重定向HttpServletResponse#sendRedirect() 的“友好” URL。当它检测到“友好”URL 时,它应该将请求转发RequestDispatcher#forward() 的“脏”URL。可以在这个相关问题中找到一个示例:How to use a servlet filter in Java to change an incoming servlet request url?

    此外,您还需要自定义 ViewHandler 来为 JSF <h:form><h:link> 等生成所需的“友好”URL。可以在此处找到示例:Dynamic Directory in Java EE Web Application

    如果这是一个新应用程序或一个可以更改的应用程序,您可以考虑使用任何现有的漂亮 URL 库,而不是重新发明轮子:

    • PrettyFaces,这是一个完整的 URL 重写解决方案。它需要一个额外的 XML 配置文件pretty-config.xml。如果您想要完全更改 URL 和/或想要配置从旧 URL 到新 URL 的重定向,此库非常有用。
    • FacesViewsOmniFaces 库,它通过单个 web.xml 上下文参数使现有 URL 无扩展。它还支持“MultiViews”,路径参数可以声明式地注入托管 bean。例如。 /foo/bar/baz 可以指向/foo.xhtmlbarbaz 的值可以由@Param(pathIndex) 注入。

    还有Mojarra Scales 库的实验性PrettyUrlPhaseListener,但它是一个旧库,PrettyFaces 主要基于它,所以不值得努力。

    【讨论】:

    • 如果我没有物理上的友好网址怎么办。我的所有帖子都存在于数据库中,例如 stackoverflow。那么如何在JSF中创建url。
    • 使用漂亮面孔时的性能和往返行程如何?
    • @pipalia 测量是知道的。
    • @BalusC 只是问一下,因为我们完全抛弃 JSF 是因为这种刚性架构的性能和其他众所周知的问题。
    【解决方案2】:

    你试过PrettyFaces吗?

    简单、有效、书签、JSF

    PrettyFaces 是 JSF1.2 和 JSF2.0 的开源扩展,它支持创建可书签的漂亮 URL。 PrettyFaces 优雅地解决了这个问题,包括以下功能:页面加载操作、与面部导航的无缝集成、动态 view-id 分配、托管参数解析以及与其他 JSF 框架的无配置兼容性。

    SEO 和一致性:

    任何企业都知道搜索引擎优化对销售的重要性。 PrettyFaces 允许 SEO 友好的 URL,并改善了客户体验。从地址栏到购买按钮,为您的网站提供统一、易于理解的感觉。

    【讨论】:

    • 我试过了,但对我没有用...我在 NetBeans 7.3 中创建了一个新项目,然后将 PF 3.3.3 jar 文件添加到库中,然后编辑 web.xml 并添加 PF xml (config) 以及...但仅适用于 PF 配置的映射
    • 没关系,我现在使用OmniFaces(有类似问题),但我通过将阶段从Development更改为Production解决了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 2014-07-14
    • 1970-01-01
    • 2014-12-04
    • 2011-06-11
    • 2011-06-27
    相关资源
    最近更新 更多