【问题标题】:Datatable not rendering with ajax call in jsf数据表未在 jsf 中使用 ajax 调用呈现
【发布时间】:2013-03-04 23:20:00
【问题描述】:

我有一个数据表,需要在使用每行中的 ajax 命令时进行刷新。

<div class="authorSection">
    <h:dataTable id="author-table" var="author" value="#{authorPOCBean.getauthors()}">
        <h:column>
            <f:facet name="header">
                <h:outputText value="Org Short Name" />
            </f:facet>
            <h:outputText id="authorOrganizationShortName" value="#author.orgShortName}" />
        </h:column>
        <h:column>
            <f:facet name="header">
                <h:outputText value="Organization Name" />
            </f:facet>
            <h:outputText id="authorOrganizationName" value="#{author.orgName}" />
        </h:column>
        <h:column>                
            <f:facet name="header">
                <h:outputText value="Location" />                
            </f:facet>
            <h:outputText id="authorLocation" value="#{author.orgLocation}" />
        </h:column>
        <h:column>
            <f:facet name="header">
                <h:outputText value="author Type" />
            </f:facet>
            <h:outputText id="authorType" value="#{author.authorName}" />
        </h:column>
        <h:column>
            <h:form id="deleteauthorForm">
                <h:commandLink action="#{authorPOCBean.deleteauthor(author)}" value="Delete">                    
                    <f:ajax render=":author-table"/>
                </h:commandLink>
            </h:form>
            <h:form id="setInitialauthorForm">
                <h:commandLink action="#{authorPOCBean.makeInitialauthor(author)}" value="Make Initial"/>                
            </h:form>
        </h:column>
    </h:dataTable>
</div>

当使用删除功能时,它似乎使表格保持不变,或者可能用旧数据呈现它?我现在已将其设置为被调用方法所做的第一件事是更改内部数组然后更改数据库内容,但它仍然使用旧数据。

我的代码有明显的问题吗?

我查看了以下链接并尝试了建议,但没有新结果。事实上,如果我用表格包围表格,表格将无法正确构建。

JSF- <f:ajax> can't render datatable

【问题讨论】:

  • 您在数据表中有表单,这可能不是有效的方法?
  • 确保在最大&lt;div&gt;之上没有nested forms,在数据表之上没有naming containers,你在Servlet 3.0 Container上运行并且你的action被实际命中(没有拼写错误,等)通过在方法上放置断点。检查后联系我们。
  • 向我们展示你的 bean 操作方法。

标签: ajax jsf-2 datatable


【解决方案1】:

请注意,您已将删除按钮和生成初始按钮放置在单独的表单中,而 DataTable 组件放置在表单之外。

尝试从表格的开头开始使用单个表格。 (ie) 你的表格组件和两个按钮应该包含在同一个表单中

对于 Ajaxical 刷新,以下内容应该适合您。

   <f:ajax render="@form"/>

如果由于其他原因您不能使用单个表单并需要多个表单,请参考此问题How to retain form data in a multi form page

【讨论】:

  • 这使按钮工作,但现在数据表的所有特殊功能(搜索、排序、格式化)不再工作。现在它只是一张朴素的桌子。知道为什么吗?
猜你喜欢
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 2011-06-29
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多