迁移到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> 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!