Hi everyone, I've just started using Tomahawk, and JSF for that matter, and I have a small problem. My problem is as follows: I want to display a schedule with rows as developers, columns as days, and cells as assignments. I can't use h:dataTable, because the cells aren't actually cells, they can span up to 5 columns, this is because if a developer is working on the same project for several consecutive days, then these consecutive cells are treated as an "atom". Up to this point all works fine, my real problem is that I have a master/detail scenario, I want to navigate to a modify page when an atom is clicked. To achieve this I want to use component binding to have quick access to the clicked atom. Here is some relevant code:
<t:dataList binding="#{schedule.htmlDataList}" value="#{ schedule.resourceSchedules}" var="resourceSchedule"> <tr> <td style="width: 200px"> <h:outputText value="#{resourceSchedule.resource.name}"/> </td> <t:dataList binding="#{resourceSchedule.htmlDataList}" value="#{ resourceSchedule.atoms}" var="atom"> <f:verbatim><td colspan="</f:verbatim> <h:outputText value="#{atom.length}"/> <f:verbatim>" style="</f:verbatim> <h:outputText value="width: #{atom.length * 125}px;"/> <f:verbatim>"></f:verbatim> <h:commandLink action="#{schedule.modify}" rendered="#{atom.assignment != null && !atom.holiday}" value="#{atom.assignment.projectName }"/> <h:outputText rendered="#{atom.holiday}" style="color: #{atom.foregroundColor}" value="N/A"/> <f:verbatim></td></f:verbatim> </t:dataList> </tr> </t:dataList> First of all, I have a backing bean named schedule. It has two properties of interest: htmlDataList and resourceSchedules. htmlDataList is binded to the outer t:dataList, resourceSchedules is of type List<ResourceSchedule>. A ResourceSchedule instance is used to represent the schedule of a single developer (a row), it has several properties of interest: resource (represents the developer), atoms (is of type List<ScheduleAtom>, represents the cells, which can span multiple columns), and htmlDataList (which is binded to the inner t:dataList). The problem is with the binding of the inner t:dataList, I get an error saying resourceSchedule is null. It seems that only the inner t:dataList has a problem with #{ resourceSchedule.htmlDataList}, I can use it elsewhere without any problems, for example, I can have <h:outputText value="#{resourceSchedule.htmlDataList}"/> just before the inner t:dataList tag without any problems. What am I doing wrong? I haven't experimented with h:dataTable to see if it's a Tomahawk issue, becuase h:dataTable cannot generate the markup I need. Here are the exceptions, together with stack traces. I really hope that someone can help me. Thanks, Csabi Message ID: ApplicationDispatcher[/forecast] Servlet.service() for servlet jsp threw exception javax.faces.FacesException Complete Message javax.faces.el.PropertyNotFoundException: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'resourceSchedule' resolved to null at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:626) at javax.faces.webapp.UIComponentTag.createComponent(UIComponentTag.java:202) at javax.faces.webapp.UIComponentClassicTagBase.createChild(UIComponentClassicTagBase.java:458) at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:643) at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1070) at org.apache.jsp.schedule_jspx._jspx_meth_t_dataList_2(schedule_jspx.java:649) at org.apache.jsp.schedule_jspx._jspx_meth_t_dataList_1(schedule_jspx.java:600) at org.apache.jsp.schedule_jspx._jspx_meth_h_form_0(schedule_jspx.java:257) at org.apache.jsp.schedule_jspx._jspx_meth_f_view_0(schedule_jspx.java:144) at org.apache.jsp.schedule_jspx._jspService(schedule_jspx.java:111) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:353) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:412) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:318) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397) at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:850) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:697) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:532) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:465) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:353) at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:413) at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:480) at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:125) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:133) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:244) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:140) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:216) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:276) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:179) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566) at com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:239) at com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667) at com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574) at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844) at com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287) at com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212) at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252) at com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75) Caused by: javax.faces.el.PropertyNotFoundException: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'resourceSchedule' resolved to null at com.sun.faces.application.ValueBindingValueExpressionAdapter.setValue(ValueBindingValueExpressionAdapter.java:143) at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:623) ... 57 more Caused by: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'resourceSchedule' resolved to null at com.sun.el.parser.AstValue.getTarget(AstValue.java:66) at com.sun.el.parser.AstValue.setValue(AstValue.java:132) at com.sun.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:255) at com.sun.faces.application.ValueBindingValueExpressionAdapter.setValue(ValueBindingValueExpressionAdapter.java:141) ... 58 more Message ID: executePhase(RENDER_RESPONSE 6, [EMAIL PROTECTED]) threw exception javax.faces.FacesException Complete Message org.apache.jasper.JasperException: javax.faces.FacesException: javax.faces.el.PropertyNotFoundException: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'resourceSchedule' resolved to null at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:418) at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:480) at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:125) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:133) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:244) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:140) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:216) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:276) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:179) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566) at com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:239) at com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667) at com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574) at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844) at com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287) at com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212) at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252) at com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75) Caused by: org.apache.jasper.JasperException: javax.faces.FacesException: javax.faces.el.PropertyNotFoundException: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'resourceSchedule' resolved to null at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:382) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:412) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:318) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397) at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:850) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:697) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:532) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:465) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:353) at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:413) ... 35 more Caused by: javax.faces.FacesException: javax.faces.el.PropertyNotFoundException: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'resourceSchedule' resolved to null at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:626) at javax.faces.webapp.UIComponentTag.createComponent(UIComponentTag.java:202) at javax.faces.webapp.UIComponentClassicTagBase.createChild(UIComponentClassicTagBase.java:458) at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:643) at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1070) at org.apache.jsp.schedule_jspx._jspx_meth_t_dataList_2(schedule_jspx.java:649) at org.apache.jsp.schedule_jspx._jspx_meth_t_dataList_1(schedule_jspx.java:600) at org.apache.jsp.schedule_jspx._jspx_meth_h_form_0(schedule_jspx.java:257) at org.apache.jsp.schedule_jspx._jspx_meth_f_view_0(schedule_jspx.java:144) at org.apache.jsp.schedule_jspx._jspService(schedule_jspx.java:111) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:353) ... 45 more Caused by: javax.faces.el.PropertyNotFoundException: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'resourceSchedule' resolved to null at com.sun.faces.application.ValueBindingValueExpressionAdapter.setValue(ValueBindingValueExpressionAdapter.java:143) at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:623) ... 57 more Caused by: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'resourceSchedule' resolved to null at com.sun.el.parser.AstValue.getTarget(AstValue.java:66) at com.sun.el.parser.AstValue.setValue(AstValue.java:132) at com.sun.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:255) at com.sun.faces.application.ValueBindingValueExpressionAdapter.setValue(ValueBindingValueExpressionAdapter.java:141) ... 58 more Message ID: StandardWrapperValve[Faces Servlet] Complete Message Servlet.service() for servlet Faces Servlet threw exception javax.el.PropertyNotFoundException: Target Unreachable, identifier 'resourceSchedule' resolved to null at com.sun.el.parser.AstValue.getTarget(AstValue.java:66) at com.sun.el.parser.AstValue.setValue(AstValue.java:132) at com.sun.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:255) at com.sun.faces.application.ValueBindingValueExpressionAdapter.setValue(ValueBindingValueExpressionAdapter.java:141) at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:623) at javax.faces.webapp.UIComponentTag.createComponent(UIComponentTag.java:202) at javax.faces.webapp.UIComponentClassicTagBase.createChild(UIComponentClassicTagBase.java:458) at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:643) at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1070) at org.apache.jsp.schedule_jspx._jspx_meth_t_dataList_2(schedule_jspx.java:649) at org.apache.jsp.schedule_jspx._jspx_meth_t_dataList_1(schedule_jspx.java:600) at org.apache.jsp.schedule_jspx._jspx_meth_h_form_0(schedule_jspx.java:257) at org.apache.jsp.schedule_jspx._jspx_meth_f_view_0(schedule_jspx.java:144) at org.apache.jsp.schedule_jspx._jspService(schedule_jspx.java:111) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:353) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:412) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:318) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397) at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:850) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:697) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:532) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:465) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:353) at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:413) at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:480) at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:125) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:133) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:244) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:140) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:216) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:276) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:179) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566) at com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:239) at com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667) at com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574) at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844) at com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287) at com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212) at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252) at com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)