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

Rom*_*man 8 jsf jsp friendly-url front-controller

例如,我有类文章与方法getTitle ()getContent ().

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

http://mysiteaddress.com/article/first-article-title
http://mysiteaddress.com/article/how-to-make-links-in-jsf
Run Code Online (Sandbox Code Playgroud)

..或类似的东西.

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

我可以创建很好的链接,<h:outputLink>但我不知道如何添加必要的功能.


在jsp中,我创建了自己的前端控制器,它从请求中解析了URL,然后执行重定向到对应的jsp-page.

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

Bal*_*usC 11

如果这是对现有应用程序的改进,那么您基本上需要一个Filter检测"脏"和"友好"URL的方法.当它检测到"脏"URL时,它应该请求重定向到"友好"URL HttpServletResponse#sendRedirect().当它检测到"友好"URL时,它应该将请求转发到"脏"URL RequestDispatcher#forward().可以在此相关问题中找到一个示例:如何在Java中使用servlet过滤器来更改传入的servlet请求URL?

此外,你还需要一个定制ViewHandler生产的JSF所期望的"友好"的URL <h:form>,<h:link>等一个例子可以在这里找到:动态目录中的Java EE Web应用程序.

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

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

还有实验PrettyUrlPhaseListener钻嘴鱼科秤库,但它是一个古老的图书馆和PrettyFaces主要是基于它,所以它是不值得的努力.


cet*_*nar 8

你尝试过PrettyFaces吗?

简单,有效,书签,JSF

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

SEO和一致性:

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