Hi everybody,
I try to develop my own component which renders a Tree2 component within the encodeBegin(FacesContext myContext)-Method of my own UIComponent.
For this purpose I use the following code-snippet:
public void encodeBegin(FacesContext myContext) throws IOException
{
ResponseWriter myWriter = myContext.getResponseWriter();
Property props = myPropertyEditor.getModel();
try
{
[...]
Application myApp = (Application) myContext.getApplication();
HtmlTree myTree = (HtmlTree)myApp.createComponent(HtmlTree.COMPONENT_TYPE);
myTree.setValue
(de.rub.swt.csseditor.db.Database.getDB().getCssAttributesAsTreeNode());
myTree.setVar("node");
myTree.setVarNodeToggler("t");
myTree.setShowRootNode(true);
myTree.setId(myTools.createUniqueId());
HtmlPanelGroup rootContent = (HtmlPanelGroup) myApp.createComponent(HtmlPanelGroup.COMPONENT_TYPE);
Map rootFacet = myTree.getFacets
();
rootFacet.put("root", rootContent);
HtmlOutputText rootText = (HtmlOutputText) myApp.createComponent(HtmlOutputText.COMPONENT_TYPE);
ValueBinding rootBinding =
myApp.createValueBinding("#{node.description}");
rootText.setValueBinding("value", rootBinding);
HtmlGraphicImage root = (HtmlGraphicImage) myApp.createComponent(HtmlGraphicImage.COMPONENT_TYPE
);
root.setValue("misc/folder/blue-folder-open.gif");
rootContent.getChildren().add(root);
rootContent.getChildren().add(rootText);
[...]
}
}
This snipped works great, but the problem is: HtmlCommandLinks are not working when I add them to the PanelGroup:
HtmlCommandLink editIconLink = myTools.createActionListenerLink("edit this node", myContext, "switchView", "propertyeditor");
editIconLink.addActionListener(new SwitchWindow());
rootContent.getChildren().add(editIconLink);
When I click on such a link I'll get the following error:
StandardWrapperValve[Faces Servlet]:
Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
at org.apache.myfaces.custom.tree2.UITreeData.getDataModel(UITreeData.java:420)
at org.apache.myfaces.custom.tree2.UITreeData.setNodeId
(UITreeData.java:320)
at org.apache.myfaces.custom.tree2.HtmlTree.setNodeId(HtmlTree.java:95)
at org.apache.myfaces.custom.tree2.UITreeData.processDecodes(UITreeData.java:172)
at javax.faces.component.UIComponentBase.processDecodes
(UIComponentBase.java:880)
at javax.faces.component.UIForm.processDecodes(UIForm.java:144)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:880)
at javax.faces.component.UIViewRoot.processDecodes
(UIViewRoot.java:306)
at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:79)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
at
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java
:144)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._invokeDoFilter(AdfFacesFilterImpl.java:367)
at oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._doFilterImpl(AdfFacesFilterImpl.java
:336)
at oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl.doFilter(AdfFacesFilterImpl.java:196)
at oracle.adf.view.faces.webapp.AdfFacesFilter.doFilter(AdfFacesFilter.java:87)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java
:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal
(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java
:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext
(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service
(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java
:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run
(Thread.java:534)
But my HtmlCommandLink renders a different UIComponent - without any tree-components. Therefore there should be no NullPointerException in UITreeData because the linked JSP has no Tree2-component!
What am I doing wrong? Does anybody of you guys has any helpfull hints for me?
Greetings,
Hendrik
- javax.servlet.ServletException using Tree2 Hendrik Neumann
- Re: javax.servlet.ServletException using Tree2 Hendrik Neumann
- Re: javax.servlet.ServletException using Tree... Matthias Wessendorf
- Re: javax.servlet.ServletException using ... Andrew Robinson
- Re: javax.servlet.ServletException us... Hendrik Neumann
- Re: javax.servlet.ServletException using Tree2 Dennis Byrne
- Re: javax.servlet.ServletException using Tree... Hendrik Neumann
- Re: javax.servlet.ServletException using Tree2 Dennis Byrne
- Re: javax.servlet.ServletException using Tree... Hendrik Neumann