数据表不能使用jsf中的ajax调用进行渲染

时间:2013-03-04 23:20:01

标签: ajax jsf-2 datatable

我有一个数据表需要在使用每行中找到的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

1 个答案:

答案 0 :(得分:0)

请注意,您已将Delete Button和Make初始按钮放在一个单独的表单中,而DataTable组件则放在表单之外。

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

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

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

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