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

如何解决如何在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和值,barbaz可以通过注入@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中实现相同的功能?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?