2

我有一个数据表,需要在使用每行中的 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> 无法呈现数据表

4

1 回答 1

0

请注意,您已将 Delete Button 和 Make initial Buttons 放置在单独的表单中,而 DataTable 组件则放置在表单之外。

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

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

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

如果由于其他原因您不能使用单个表单并需要多个表单,请参考这个问题 如何在多表单页面中保留表单数据

于 2013-03-05T03:16:11.213 回答