Websphere Portal8でJSF2.0ポートレットを実行する際に問題が発生しました。<f:ajax>
タグを使用しないと、アプリケーションが何らかの形で機能しているように見えます。しかし、<f:ajax>
ポートレットを追加するとレンダリングされず、SystemOut.logに次のように表示されます。
0000003c FaceletViewDe E Error Rendering View[/views/Home.xhtml]
java.lang.NullPointerException
at com.ibm.faces20.portlet.util.WebXMLParser.endElement(WebXMLParser.java:115)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at com.ibm.faces20.portlet.util.WebXMLParser.<init>(WebXMLParser.java:51)
at com.ibm.faces20.portlet.httpbridge.PortletResource.getRequestPath(PortletResource.java:106)
at org.apache.myfaces.shared_impl.renderkit.html.util.ResourceUtils.renderDefaultJsfJsInlineIfNecessary(ResourceUtils.java:204)
at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.encodeEnd(HtmlTextRendererBase.java:69)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:535)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:626)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622)
...
WebSphere Application Server8に含まれているIBMポートレット・ブリッジを使用するようにアプリケーションを構成しました。faces-config.xmlに以下を追加しました。
<view-handler>com.ibm.faces20.portlet.FaceletPortletViewHandler</view-handler>
<resource-handler>com.ibm.faces20.portlet.httpbridge.PortletResourceHandler</resource-handler>
<el-resolver>com.ibm.faces20.portlet.PortletELResolver</el-resolver>
portlet.xmlでは、次のようなIBMクラスを使用します。
...
<portlet-class>com.ibm.faces20.portlet.FacesPortlet</portlet-class>
<init-param>
<name>com.ibm.faces.portlet.page.view</name>
<value>/views/Home.xhtml</value>
</init-param>
...
<resource-handler>com.ibm.faces20.portlet.httpbridge.PortletResourceHandler</resource-handler>
私がfaces-config.xmlから削除すると、アプリケーションはタグでも機能することがわかりました
。しかし、jsf.jsが欠落しているため、すべてのAJAXJavaScript呼び出しが失敗します。したがって、アプリケーションは存在しない場合のように動作します。
助けやアドバイスをいただければ幸いです。
JSF2.0ポートレットをWebSpherePortal8で5日間実行しようとしていますが、ほとんど成功せず、多くの苦痛があります。ドキュメントが少なく、ソースがない場合は非常に困難です(クラスを逆コンパイルする必要があります!)。Crappy独自のクローズドソース!