Jsf 访问支持bean中的HTML数据表时引发异常
我正在用JSF构建一个带有CrUD功能的简单应用程序。我正在尝试使用tomahawk组件实现编辑功能。我无法在我的支持bean中检索所选行 以下是我的JSP文件剪贴:Jsf 访问支持bean中的HTML数据表时引发异常,jsf,Jsf,我正在用JSF构建一个带有CrUD功能的简单应用程序。我正在尝试使用tomahawk组件实现编辑功能。我无法在我的支持bean中检索所选行 以下是我的JSP文件剪贴: <t:dataTable id="data" binding="#{selectOneRowList.dataTable}" styleClass="scrollerTable" headerClass="standardTable_Heade
<t:dataTable id="data"
binding="#{selectOneRowList.dataTable}"
styleClass="scrollerTable"
headerClass="standardTable_Header"
footerClass="standardTable_Header"
rowClasses="standardTable_Row1,standardTable_Row2"
columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
var="car"
value="#{selectOneRowList.list}"
sortColumn="#{selectOneRowList.sortColumn}"
sortAscending="#{selectOneRowList.sortAscending}"
preserveDataModel="false"
preserveSort="true"
preserveRowStates="true"
rows="10"
>
<h:column>
<f:facet name="header">
<h:outputText value="Select"/>
</f:facet>
<t:selectOneRow groupName="selection" id="hugo" value="#{selectOneRowList.selectedRowIndex}"
onchange="submit();" immediate="true"
valueChangeListener="#{selectOneRowList.processRowSelection}"/>
</h:column>
<h:column>
<f:facet name="header">
</f:facet>
<h:outputText value="#{car.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Cars" />
</f:facet>
<h:outputText value="#{car.type}" />
</h:column>
<t:column sortable="true">
<f:facet name="header">
<h:outputText value="Color" />
</f:facet>
<h:outputText value="#{car.color}" />
</t:column>
</t:dataTable>
我的DTO{Data Transfer Object}是SimpleCar.java,它包含变量ID、类型、颜色及其各自的setter/getter
dataItem变量的类型为“SimpleCar”。dataTable的类型为HTMLDataTable。我能够获得前3个SOP,但第4个SOP未打印。我在服务器上收到以下异常:
javax.faces.el.EvaluationException:调用表达式#{selectOneRowList.editCar}时发生异常
org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:156)
javax.faces.component.UICommand.broadcast(UICommand.java:89)
javax.faces.component.UIViewRoot.\u广播阶段(UIViewRoot.java:97)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:341)
单击edit按钮,就会调用我的支持bean中的editCar方法。我需要在我的支持bean中获取所选行的数据。为什么会发生异常
上面的示例取自网站上发布的Tomahawk示例WAR。我已经通过了许多链接,包括上的链接,但都没有帮助
关于,要使用
DataTable.getRowData()
您必须将绑定到editCar()
的按钮放在数据表中。因此,在JSP上需要添加另一列,例如:
...
<t:column sortable="true">
<f:facet name="header">
<h:outputText value="Color" />
</f:facet>
<h:outputText value="#{car.color}" />
</t:column>
<t:column sortable="false">
<h:commandButton value="Edit" action="#{selectOneRowList.editCar}" />
</t:column>
</t:dataTable>
。。。
...
<t:column sortable="true">
<f:facet name="header">
<h:outputText value="Color" />
</f:facet>
<h:outputText value="#{car.color}" />
</t:column>
<t:column sortable="false">
<h:commandButton value="Edit" action="#{selectOneRowList.editCar}" />
</t:column>
</t:dataTable>