例如,我的课程文章包含方法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中实现相同的功能?
答案 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库而不是重新发明轮子:
pretty-config.xml
。如果您想要完全更改URL和/或想要从旧URL到新URL配置重定向,则此库非常有用。web.xml
上下文参数进行无扩展。它还支持“MultiViews”,从而可以声明性地在托管bean中注入路径参数。例如。 /foo/bar/baz
可以指向/foo.xhtml
,值bar
和baz
可以@Param(pathIndex)
注入。
还有OmniFaces PrettyUrlPhaseListener库的实验Mojarra Scales,但它是一个旧库,而PrettyFaces主要基于它,所以不值得努力。
答案 1 :(得分:8)
你试过PrettyFaces吗?
任何企业都知道搜索引擎优化对销售的重要性。 PrettyFaces允许SEO友好的URL,并改善客户体验。从地址栏到购买按钮,为您的网站提供统一,易懂的感觉。