无法通过数据表值属性

时间:2017-08-16 13:27:36

标签: jsf primefaces datatable rowexpansion

我有一个扩展数据表,它由来自后端的Arraylist填充,其中id为主键。展开行时,必须在另一个表中搜索特定于id的行,并且必须显示所有行。当我试图在value属性中传递id作为参数时,它会给出类强制转换异常。

这是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>

请帮助。

1 个答案:

答案 0 :(得分:0)

我认为您需要在p:datatable标记内定义下面的行,并将id作为参数传递,而不是在子数据表中的#{statusList.getScenarioStatusList(data.id)},您只需要执行value =&#34;#{ yourBean.scenarioStatusList}&#34 ;.在loadLists(data.id)方法中填充scenarioStatusList。

<p:ajax event="rowToggle" listener="#{yourBean.loadLists(data.id)}"  />