JSF 1.2 应用程序无法与 GlassFish v3 配合使用

标签 jsf glassfish richfaces java

迁移到GlassFish v3/JDK6u18/NB6.8让我很头疼,现在我很困惑。我的项目(JSF、RichFaces、Spring)与 GlassFish v2 + JDK6u17 配合良好。我使用相同的 JAR 和相同的 JSF 版本。

我的一个 JSP 包含 <rich:tree> ,这渲染得很好,但如果我在此页面上发布值,我会得到:

WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.IllegalArgumentException: In AbstractTreeDataModel rowIndex must be -1.
        at org.richfaces.model.AbstractTreeDataModel.setRowIndex(AbstractTreeDataModel.java:52)
        at org.ajax4jsf.component.UIDataAdaptor.setRowIndex(UIDataAdaptor.java:289)
        at javax.faces.component.UIData.visitColumnsAndRows(UIData.java:1544)
        at javax.faces.component.UIData.visitTree(UIData.java:1212)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1457)
        at javax.faces.component.UIForm.visitTree(UIForm.java:333)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1457)
        at javax.faces.component.UIViewRoot.processRestoreState(UIViewRoot.java:869)
        at org.ajax4jsf.application.AjaxStateManager.restoreView(AjaxStateManager.java:439)
        ....

在我的另一页上,类似的事情正在发生。它包含 <h:selectManyCheckbox> ,它会在值发生变化时重新渲染一些其他内容。因此,在提交的情况下,我会得到如下内容:

WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
        at javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:564)
        at org.ajax4jsf.component.EventValueExpression.getComponent(EventValueExpression.java:77)
        at org.ajax4jsf.component.EventValueExpression.getValue(EventValueExpression.java:130)
        at javax.faces.component.UIComponentBase$AttributesMap.get(UIComponentBase.java:2166)
        at com.sun.faces.renderkit.RenderKitUtils.renderPassThruAttributesOptimized(RenderKitUtils.java:608)
        at com.sun.faces.renderkit.RenderKitUtils.renderPassThruAttributes(RenderKitUtils.java:321)
        at com.sun.faces.renderkit.html_basic.SelectManyCheckboxListRenderer.renderOption(SelectManyCheckboxListRenderer.java:328)
        at com.sun.faces.renderkit.html_basic.SelectManyCheckboxListRenderer.encodeEnd(SelectManyCheckboxListRenderer.java:177)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)
        ....

我尝试过组合 JSF/RichFaces 的版本,但结果都是一样。

如有任何帮助,我们将不胜感激!

最佳答案

Glassfish v3 捆绑了 JSF 2.0,因此这可能会造成问题。如果您想将 JSF 1.2 与 Glassfish v3 一起使用,则必须在 WEB-INF 文件夹中添加 sun-web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD GlassFish
Application Server 3.0 Servlet 3.0//EN"
"http://www.sun.com/software/appserver/dtds/sun-web-app_3_0-0.dtd">
<sun-web-app>
    <class-loader delegate="false"/>
    <property name="useBundledJsf" value="true"/>
</sun-web-app>

关于JSF 1.2 应用程序无法与 GlassFish v3 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2333330/

相关文章:

Spring Security AuthenticationFailureHandler 与 AuthenticationFailureEvent

javascript - 在 primefaces 数据表上使用监听器执行行单击

jsp - JSF 上的 Primefaces taglib 错误

java - 无法通过 com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages 加载任何资源包

java - 以丰富的方式显示 bean 值 :popupPanel

java - JSF 实体转换错误 : rich suggestionbox Conversion Error setting value '*' for 'null Converter'

java - 用于定义值的 JSF 复合属性

jsf - 将 Java EE 服务器从 GlassFish 更改为 Tomcat

java - 当应用程序服务器失去互联网连接时维持服务的机制

jsf-2 - h :selectOneMenu default item to null, 清除空项目值,必填字段