迁移到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的版本,但它只是产生了相同的结果。
任何帮助将不胜感激!
答案 0 :(得分:2)
Glassfish v3捆绑了JSF 2.0,因此可能会造成麻烦。如果您想将JSF 1.2与Glassfish v3一起使用,则必须在sun-web.xml
文件夹中添加WEB-INF
:
<?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>
答案 1 :(得分:0)
Exceptiion Trace :-
On thread: 'WebContainer : 0'
com.ibm.websphere.servlet.error.ServletErrorReport: java.lang.NoSuchMethodError: javax/faces/component/UIViewRoot.getComponentResources(Ljavax/faces/context/FacesContext;Ljava/lang/String;)Ljava/util/List;
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1764)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131)
我使用了以下依赖
commons-codec-1.3.jar
commons-httpclient-3.1.jar
cssparser-0.9.5.jar
guava-r07.jar
jsf-api-2.0.6-FCS.jar
jsf-impl-2.0.6-FCS.jar
jsr250-api-1.0.jar
richfaces-components-api-4.2.0.Final.jar
richfaces-components-ui-4.2.0.Final.jar
richfaces-core-api-4.2.0.Final.jar
richfaces-core-impl-4.2.0.Final.jar
sac-1.3.jar
解决方案:如果您使用WebSphere 7.0应用程序服务器,则更改了以下设置
1)启动WebSphere 7.0 2)以adminstartor身份运行 3)服务器 - &gt; websphere应用服务器 - &gt; server1 - (打开我们的应用程序EAR文件)
4)classloader策略下拉变为“mutiple”
5)类加载模式下拉chnage为“首先加载本地类加载器的类(父类最后一个)
它将启动应用程序