f:ajax不会在p:layout中呈现p:dataTable

时间:2014-06-19 10:56:46

标签: ajax jsf layout primefaces

我有一个dataTable,可以通过点击删除行删除图像。 enter image description here 当我点击它时,数据被删除但表格没有呈现

这是我的代码:

<p:fieldset id="knowledgeBases" legend="#{appMsg.knowledge_base}">
    <p:layout style="width:auto; height:800px;">
    <p:layoutUnit position="center" id="kbCenter">
        <p:dataTable id="kbDataTable" var="kb" value="#{KnowledgeBaseBean.kbList}" sortMode="multiple"
                     rows="10" paginator="true" rowsPerPageTemplate="10,15,20"
                     paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">
            <p:ajax event="filter" listener="#{KnowledgeBaseBean.onFilter}" update = ":formId:kbDataTable"/>

            <p:column style="width:2%">
                <h:commandLink title="#{appMsg.common_delete}" id="deleteImage" onclick="return confirm('#{appMsg.del_warn_current_record}')" >
                    <h:graphicImage name="images/new_design/image13.png" style="width:15px;height:15px;text-align: center" />
                        <f:ajax event="click" execute="@this" render="@form"
                                listener="#{KnowledgeBaseBean.deleteListItem}"/>
                </h:commandLink>
            </p:column>                 
            ...

2 个答案:

答案 0 :(得分:0)

如果您使用整页布局,问题可能是您在layoutUnit周围有一个表单。反过来做。从Primefaces 4.0用户指南p。 262:

  

使用表单和整页布局时,请避免使用包含layoutunits的表单,因为生成的dom可能不一样。因此,无效

   <p:layout fullPage="true">
    <h:form>
           <p:layoutUnit position="west" size="100">
                 h:outputText value="Left Pane" />
           </p:layoutUnit>
           <p:layoutUnit position="center">
                 <h:outputText value="Right Pane" />
           </p:layoutUnit>
    </h:form>

A layout unit must have it’s own form instead, also avoid trying to update layout units because of same reason, update it’s content instead.

进一步解释here

答案 1 :(得分:0)

问题出在我的豆子里。当我从数据库中删除对象时,我忘记从列表中删除该对象。