例如,我有带有方法getTitle ()和的Article类getContent ()。
getTitle ()
getContent ()
我也有带有method的ArticlesServicegetAllArticles()。如何创建具有有意义名称的链接列表(由组成#{article.title})?喜欢:
getAllArticles()
#{article.title}
http://mysiteaddress.com/article/first-article-title http://mysiteaddress.com/article/how-to-make-links-in-jsf
..或类似的东西。
我可以使用来创建具有所有必要功能的链接<h:commandLink>,但是我不知道如何为此做一个很好的“ href”:它总是带有href’#’。
<h:commandLink>
我可以使用它创建漂亮的链接,<h:outputLink>但是我不知道如何向其中添加必要的功能。
<h:outputLink>
在jsp中,我创建了自己的前端控制器,该控制器解析请求中的url,然后执行重定向到相应的jsp-page。
如何在JSF中实现相同的功能?
如果这是对现有应用程序的改进,那么您基本上需要一个Filter可检测“肮脏”和“友好” URL的。当它检测到“脏” URL时,则应通过 将 请求 重定向 到“友好” URL HttpServletResponse#sendRedirect()。当它检测到“友好” URL时,则应通过将请求 转发 到“脏” URL RequestDispatcher#forward()。在以下相关问题中可以找到一个示例:如何在Java中使用servlet过滤器来更改传入的servlet请求url?
Filter
HttpServletResponse#sendRedirect()
RequestDispatcher#forward()
此外,你还需要一个定制ViewHandler生产的JSF所期望的“友好”的URL <h:form>,<h:link>等一个例子可以在这里找到:在J2EEWeb应用程序动态目录。
ViewHandler
<h:form>
<h:link>
如果这是一个新应用程序,或者是一个随时可以更改的应用程序,则可以考虑使用任何现有的漂亮URL库,而不必重新发明轮子:
pretty-config.xml
web.xml
/foo/bar/baz
/foo.xhtml
bar
baz
@Param(pathIndex)
还有实验PrettyUrlPhaseListener的钻嘴鱼科秤库,但它是一个古老的图书馆和PrettyFaces主要是基于它,所以它是不值得的努力。