我尝试了JavaServer Faces 2.2(Mojarra 2.2.4)的最新版本
并注意到以这种不需要的方式更改了我的查询字符串:

page.jsf?jftfdi=&jffi=

代替
page.jsf

我发现这是新的JSF 2.2功能。但是这些查询参数(jftfdi,jffi)破坏了我对SEO友好的网址。如何禁用它?

最佳答案

这是Mojarra中的错误。如果没有任何流导航配置(by the new @FlowScoped annotation and <j:flow-xxx> tags),则不应附加它们。

基本上,负责OutcomeTargetRenderer<h:link>的HTML输出生成的<h:button>类在附加流导航参数之前错误地检查了 NavigationCase#getToFlowDocumentId() 是否返回非null。但是,基于the javadoc的基本实现永远不会返回null,而是一个空字符串。因此,渲染器始终认为它处于流导航的中间,并且始终附加关联的jftfdijffi请求参数。解决方法是让它也检查是否返回非空字符串。

我将其报告为issue 3054,他们确认这是一个错误,目前正在研究中。该修补程序可能会在Mojarra 2.2.5中提供。

更新:截至目前,不到一天后,它已针对2.2.5进行了修复。

顺便说一句, jftfdi 代表“javax.faces到流文档ID”,它在the javadoc中指定如下:



jffi 代表“javax.faces流ID”,它在the javadoc中指定如下:

10-07 15:47