相关:在Tomcat 9上更新到JSF 2.3(Mojarra)时,空字符串与空字符串的问题



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

以下是我所做的升级:

  1. 更新的JSF工件:从javax.faces:javax.facesApi:2.2和org.glassfish:javax.faces:2.2.15javax.faces:javax.facesAPI:2.3和org.glassefish:javax.faces:2.3.8
  2. 中更新的命名空间面向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

EDIT:原来这与Tomcat 8(和9(的强制行为有关,空字符串被错误地设置为空字符串

但正如标题中所述,我正试图在Tomcat9(9.0.12(上迁移到JSF 2.3。前面的问题和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)

web.xml中,包括:

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

相关内容

  • 没有找到相关文章

最新更新