我尝试了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
,而是一个空字符串。因此,渲染器始终认为它处于流导航的中间,并且始终附加关联的jftfdi
和jffi
请求参数。解决方法是让它也检查是否返回非空字符串。
我将其报告为issue 3054,他们确认这是一个错误,目前正在研究中。该修补程序可能会在Mojarra 2.2.5中提供。
更新:截至目前,不到一天后,它已针对2.2.5进行了修复。
顺便说一句, jftfdi
代表“javax.faces
到流文档ID”,它在the javadoc中指定如下:
jffi
代表“javax.faces
流ID”,它在the javadoc中指定如下: