【问题标题】:Weblogic 10.3.4 jsf 1.2 encodes special charactersWeblogic 10.3.4 jsf 1.2 编码特殊字符
【发布时间】:2014-01-13 20:34:06
【问题描述】:

我们有一个 Web 应用程序,它使用可部署库 (jsf-1.2.war) 中的 weblogic jsf 1.2 实现。在打包的 jsf-impl 和 weblogic 10.3.4 的兼容性出现一些问题后,我们开始使用 weblogic jsf impl。

所以问题是,我们有带有几个参数的 outputLink,这些参数的值可能包含空间字符,所以我们显式编码它们(为此我们有 taglib 函数),但是 weblogic 10.3 上的 jsf impl。 4 也对这些字符进行编码,因此我们有双重编码的链接 URL。有谁知道是否有可能在 weblogic 上禁用此选项并仅手动编码参数。

【问题讨论】:

    标签: jsf


    【解决方案1】:

    只需使用自定义标记库自己对其进行编码。 <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} 可以只返回原始和未编码的字符串值。


    更新 根据 cmets,这表明这两个服务器 JBoss AS 4.2.3 和 WebLogic 10.3.2 正在使用特定的 JSF 实现/版本,这暴露了 @ 的 URL 编码中的错误987654327@。目前我只能找到以下相关报道(不清楚你用的是MyFaces还是Mojarra,所以我都搜索了):

    我建议将相关服务器的 JSF 版本替换/升级到比这些报告中提到的版本更新的版本,或者将 JSF 库与 webapp 本身一起发布,并添加 web.xml 上下文参数来指示服务器改为使用 webapp 捆绑的 JSF。

    【讨论】:

    • 谢谢。我需要编码值。问题在于应用程序服务器的不同行为 - jboss 423 和 weblogic 1032 确实点头编码 f:param,但 weblogic 1034 编码。我试图停止显式编码参数,但是 - 不走运 - 我们只有一个带有 url 的渲染链接,其中包含特殊字符,而不是编码字符(jboss 423 和 weblogic 1032 的行为相同)。我查看了 OutputLinkRenderer 的 weblogic 1032 和 1034 实现,并且 1032 不编码规范。字符,当 1034 - 对它们进行编码。也许,有可能以某种方式禁用 weblogic 103 上的自动编码
    • @Yigak 您的“答案”有点太长,不适合作为评论,因此被截断。幸运的是,BalusC 可以看到原版。以后在评论答案时请使用cmets,并尽量适应限制。如果它太大而不能成为评论,它可能应该是对您的问题的编辑。
    猜你喜欢
    • 1970-01-01
    • 2011-12-28
    • 2016-10-19
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多