我们有一个Web应用程序,它使用来自deployable-libraries(jsf-1.2.war)的weblogic jsf 1.2实现。我们在打包jsf-impl和weblogic 10.3的兼容性问题之后开始使用weblogic jsf impl。 4 。
所以问题在于,我们有一些带有几个参数的outputLink,这些参数的值可能包含空间字符,所以我们对它们进行了显式编码(我们有这个用途的taglib函数),但jsf impl在weblogic 10.3上。 4 也对这些字符进行编码,因此我们有双重编码的链接URL。有没有人知道是否有可能在weblogic上禁用此选项并仅手动编码params。
答案 0 :(得分:3)
只需使用自定义标记库自行编码不。 <f:param>
已隐含地执行此操作。
<h:outputLink value="page.jsf">
<h:outputText value="Click" />
<f:param name="foo" value="#{bean.foo}" />
<f:param name="bar" value="#{bean.bar}" />
</h:outputLink>
这就是全部。上面示例中的#{bean.foo}
和#{bean.bar}
只能返回原始和未编码的字符串值。
更新根据评论,这表明这两个服务器JBoss AS 4.2.3和WebLogic 10.3.2正在使用特定的JSF实现/版本,它暴露了{编码的URL编码中的错误{1}}。到目前为止,我只能找到以下相关报告(目前尚不清楚你是否正在使用MyFaces或Mojarra,所以我搜索了两个):
我建议将相关服务器的JSF版本替换/升级到比这些报告中提到的版本更新的版本,或者将JSF库与webapp本身一起发送,并添加<f:param>
上下文参数来指示服务器使用webapp捆绑的JSF代替。