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