【问题标题】:Using dataTable Primefaces使用 dataTable Primefaces
【发布时间】:2011-05-02 09:51:44
【问题描述】:

我正在使用 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>

【问题讨论】:

    标签: jsp jsf datatable primefaces


    【解决方案1】:

    第二个数据表还没有渲染到客户端。所以 ajax update 无法访问。例如将其放入 h:panelGroup 中,而不是始终呈现给客户端。

    <h:panelGroup id="tasksList">
        <h:dataTable rendered="#{not empty TaskController.tasks}" ... >
            ...
        </h:dataTable>
    </h:panelGroup>
    

    【讨论】:

    • 它不起作用...我正在尝试在另一个页面上进行相同类型的刷新,即使使用您的 panelGroup 解决它也不起作用。
    • 答案是针对您在问题中发布的代码示例。如果有问题的组件不在 same UINamingContainer 组件(h:formf:subview 等)内,那么您需要在 update ID 前加上 : 前缀,例如 update=":tasksList"以便它从根级别搜索。
    猜你喜欢
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 2012-07-14
    • 1970-01-01
    • 2013-10-21
    相关资源
    最近更新 更多