如何在jsf中创建用户友好和seo友好的URL?

时间:2009-12-17 11:38:20

标签: jsp jsf friendly-url front-controller

例如,我的课程文章包含方法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-page。

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

2 个答案:

答案 0 :(得分:11)

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

此外,您还需要自定义ViewHandler来为JSF生成所需的“友好”网址<h:form><h:link>等。可以在此处找到示例:{{3} }。

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

  • Dynamic Directory in Java EE Web Application,这是一个完整的网址重写解决方案。它需要一个额外的XML配置文件pretty-config.xml。如果您想要完全更改URL和/或想要从旧URL到新URL配置重定向,则此库非常有用。
  • {li> PrettyFaces FacesViews库,它使现有网址只能通过单个web.xml上下文参数进行无扩展。它还支持“MultiViews”,从而可以声明性地在托管bean中注入路径参数。例如。 /foo/bar/baz可以指向/foo.xhtml,值barbaz可以@Param(pathIndex)注入。

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

答案 1 :(得分:8)

你试过PrettyFaces吗?

简单,有效,书签,JSF

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

SEO和一致性:

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