【问题标题】:RELATED: Problem with null versus empty String when updating to JSF 2.3 (Mojarra) on Tomcat 9相关:在 Tomcat 9 上更新到 JSF 2.3 (Mojarra) 时出现空字符串与空字符串的问题
【发布时间】:2019-05-14 12:08:26
【问题描述】:

该应用程序似乎启动良好,但我现在被应用于查看参数的空字符串所困扰。 javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL 参数已在我的 web.xml 中设置为 true。

这是我为升级所做的:

  1. 更新了 JSF 工件:从 javax.faces:javax.faces-api:2.2 和 org.glassfish:javax.faces:2.2.15javax.faces:javax.faces- api:2.3 和 org.glassfish:javax.faces:2.3.8
  2. 更新了 faces-config.xml 中的命名空间。
  3. 更新了 beans.xml 中的命名空间以启用 2.0。
  4. 已将 web.xml 更新为 servlet 4.0。
  5. web.xml 中添加了 javax.faces.ENABLE_CDI_RESOLVER_CHAINjavax.faces.ENABLE_WEBSOCKET_ENDPOINT
  6. 我什至添加了一个 JSF 2.3 激活器类,尽管它似乎是多余的。
  7. OmniFaces 从 2.6.9 更新到 3.2。

编辑:原来这与Tomcat 8 (and 9) coerce behaviour, null strings are incorrectly set as empty strings有关

但正如标题中所述,我正在尝试迁移到 Tomcat 9 上的 JSF 2.3 (9.0.12)。上一个问题和 BalusC 博客没有直接解决这种情况。我还应该声明该应用程序在此之前在 JDK11 上运行没有问题。

从上一个问题中我了解到使用 Oracles EL 实现可以工作,但我得到:

java.lang.ArrayIndexOutOfBoundsException: arraycopy: last source index 16 out of bounds for byte[9]
at java.base/java.lang.System.arraycopy(Native Method)
at com.sun.faces.util.ByteArrayGuardAESCTR.decrypt(ByteArrayGuardAESCTR.java:157)
at com.sun.faces.context.flash.ELFlash$PreviousNextFlashInfoManager.decode(ELFlash.java:1414)
at com.sun.faces.context.flash.ELFlash.getCurrentFlashManager(ELFlash.java:1237)
at com.sun.faces.context.flash.ELFlash.doPrePhaseActions(ELFlash.java:641)
at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:214)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:98)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:133)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:201)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:670)

【问题讨论】:

  • 你的 EL 版本怎么样?
  • 我没有触及它,因为它不是我的 Gradle 构建文件的一部分。 EL 不是 Tomcat 捆绑的吗?
  • 确实如此,但如果您在自己的项目中包含某些内容,它可能会发挥作用。
  • 相关? stackoverflow.com/questions/33334192/… ???我通过在搜索引擎google.com/… 中发布“tomcat 9 javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL site:stackoverflow.com”发现了这一点
  • 这似乎真的很相关。我的第一反应是我已经在 Tomcat 8.5 上,这不是问题,但我会马上检查一下。

标签: jsf el tomcat9


【解决方案1】:

在您的 web.xml 中,包括:

<context-param>
    <param-name>
        javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
    </param-name>
    <param-value>
        **false**
    </param-value>
</context-param>

【讨论】:

    猜你喜欢
    • 2019-10-10
    • 1970-01-01
    • 2015-01-23
    • 2014-12-18
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    相关资源
    最近更新 更多