【问题标题】:f:ajax does not render p:dataTable inside p:layoutf:ajax 不会在 p:layout 内呈现 p:dataTable
【发布时间】:2014-06-19 10:56:46
【问题描述】:

我有一个数据表,并且可以通过单击删除图像来删除行。 当我点击它时,数据被删除但表格没有呈现

这是我的代码:

<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>                 
            ...

【问题讨论】:

  • 你的KnowledgeBaseBean的范围是什么,尝试重新加载页面F5现在渲染了吗?
  • 是的,它是在我重新加载页面时呈现的
  • beanKnowledgeBaseBean的作用域是什么
  • 范围是 ViewScoped

标签: ajax jsf layout primefaces


【解决方案1】:

如果您使用整页布局,问题可能是您在 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.

【讨论】:

  • 感谢重播,对阅读很有帮助。但不幸的是它没有帮助,因为我的布局有一个样式而不是将 fullPage 设置为 true,所以表单应该按预期工作。还有其他想法吗?
  • 您是否尝试过使用 p:commandLink、p:graphicImage 和 p:ajax 代替?您确定它已被删除并且不只是显示已删除的消息吗?也许 onclick() 吃掉了 ajax 事件。有一个 primefaces 组件可以用于这种类型的确认,我现在不记得名字了
  • 我没有尝试 p:commandLink、p:graphicImage 和 p:ajax,但我会的。请刷新你的记忆,也许我正是需要这个组件
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2012-08-21
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 2019-09-17
    相关资源
    最近更新 更多