我有一个扩展数据表,它由后端的 Arraylist 填充,该数组列表将 id 作为主键。展开行时,必须在另一个表中搜索该 id 特定行,并且必须显示所有行。当我尝试将 id 作为 value 属性中的参数传递时,它会给出类强制转换异常。
这是 XHTML 代码
<h:form>
<p:dataTable var="data"
value="#{trackerList.trackerList}">
<f:facet name="header">Summary</f:facet>
<p:column style="width:16px">
<p:rowToggler />
</p:column>
<p:column headerText="ID">
<h:outputText value="#{data.id}" />
</p:column>
<p:column headerText="Status">
<h:outputText value="#{data.status}" />
</p:column>
<p:column headerText="Created Time">
<h:outputText value="#{data.createdTime}" />
</p:column>
<p:column headerText="Created By">
<h:outputText value="#{data.createdby}" />
</p:column>
<p:column headerText="Updated By">
<h:outputText value="#{data.updatedby}" />
</p:column>
<p:rowExpansion>
<p:dataTable var="metadata" value="#{statusList.getScenarioStatusList(data.id)}">
<p:column headerText="Requirements">
<h:outputText value="#{metadata.requirements}" />
</p:column>
<p:column headerText="Exam Name">
<h:outputText value="#{metadata.examName}" />
</p:column>
<p:column headerText="Status">
<h:outputText value="#{metadata.status}" />
</p:column>
</p:dataTable>
</p:rowExpansion>
</p:dataTable>
</h:form>
请帮忙。
我认为您需要在 p:datatable 标签内定义以下行,并将 id 作为参数传递,而不是子数据表中的 #{statusList.getScenarioStatusList(data.id(},您只需执行 value= "#{yourBean.scenarioStatusList}"。 在loadLists(data.id(方法中填充scenarioStatusList。
<p:ajax event="rowToggle" listener="#{yourBean.loadLists(data.id)}" />