0

我正在使用 primefaces 的 dataTable 对象来显示一些数据,但在实现某些事情时遇到了一些问题:我首先显示一个只有 1 列的表,我想根据用户第一次选择的内容显示另一个填充数据的表一。

为此,当用户在第一个表中选择一行时,我会填写我的 TaskController 的 currentCorbeilleId 记录并尝试更新表单“tasksList”。当我现在写它时这是有道理的,但它不起作用......当我点击第一个表的一行时,没有任何反应......

我是否以正确的方式使用 dataTable 组件?我应该做些什么才能让它发挥作用?谢谢您的回答 !

<f:view>
        <h:form id="mainForm">
            <p:dataTable id="corbeillesList"
                         value="#{IdentityController.groups}"
                         var="corbeillesList"
                         rendered="#{not empty IdentityController.groups}"
                         selectionMode="single"
                         selection="#{TaskController.currentCorbeilleId}"
                         update="tasksList">
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Name" />
                    </f:facet>
                    <h:commandLink value="#{corbeillesList.name}">
                    </h:commandLink>
                </p:column>
            </p:dataTable>
            <p:dataTable id="tasksList"
                         value="#{TaskController.tasks}"
                         var="task"
                         rendered="#{not empty TaskController.tasks}"
                         selectionMode="single">
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Date" />
                    </f:facet>
                    <h:outputText value="#{task.duedate}" rendered="#{task.duedate != null}">
                        <f:convertDateTime pattern="dd/MM/yyyy" type="date" dateStyle="short" />
                    </h:outputText>
                    <h:outputText value="Date non definit" rendered="#{task.duedate == null}" />
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Name" />
                    </f:facet>
                    <h:outputText value="#{task.name}" />
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Description" />
                    </f:facet>
                    <h:outputText value="#{task.description}" />
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Verouillee" />
                    </f:facet>
                    <h:outputText value="oui" rendered="#{task.assignee != null}" />
                    <h:outputText value="non" rendered="#{task.assignee == null}" />
                </p:column>
            </p:dataTable>
        </h:form>
    </f:view>
4

1 回答 1

4

第二个数据表尚未呈现给客户端。因此 ajax 无法访问update。把它放在例如 a 中h:panelGroup,它总是呈现给客户端。

<h:panelGroup id="tasksList">
    <h:dataTable rendered="#{not empty TaskController.tasks}" ... >
        ...
    </h:dataTable>
</h:panelGroup>
于 2010-10-30T05:31:00.413 回答