如何解决如何在jsf中创建用户友好和seo友好的URL?
如果这是对现有应用程序的改进,那么您基本上需要一个Filter
可检测“肮脏”和“友好”
URL的。当它检测到“脏” URL时,则应通过 将 请求 重定向 到“友好” URLHttpServletResponse#sendRedirect()
。当它检测到“友好”
URL时,则应通过将请求 转发 到“脏” URLRequestDispatcher#forward()
。在以下相关问题中可以找到一个示例:如何在Java中使用servlet过滤器来更改传入的servlet请求url?
此外,你还需要一个定制ViewHandler
生产的JSF所期望的“友好”的URL<h:form>
,<h:link>
等一个例子可以在这里找到:在J2EEWeb应用程序动态目录。
如果这是一个新应用程序,或者是一个随时可以更改的应用程序,则可以考虑使用任何现有的漂亮URL库,而不必重新发明轮子:
-
PrettyFaces,这是一个完整的URL重写解决方案。它需要一个附加的XML配置文件
pretty-config.xml
。如果您要完全更改URL和/或配置从旧URL到新URL的重定向,则此库很有用。 -
OmniFaces库的FacesViews,使现有URL 不受单个
web.xml
上下文参数的扩展。它还支持“ MultiViews”,从而可以声明性地将路径参数注入托管bean中。例如/foo/bar/baz
可以指向/foo.xhtml
和值,bar
并baz
可以通过注入@Param(pathIndex)
。
还有实验PrettyUrlPhaseListener的钻嘴鱼科秤库,但它是一个古老的图书馆和PrettyFaces主要是基于它,所以它是不值得的努力。
解决方法
例如,我有带有方法getTitle ()
和的Article类getContent ()
。
我也有带有method的ArticlesServicegetAllArticles()
。如何创建具有有意义名称的链接列表(由组成#{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中实现相同的功能?