无法从 <f:ajax render="..."> 中找到纯 HTML 元素

Unable to locate plain HTML element from <f:ajax render="...">

我有table显示设备。下面有一个按钮可以输入页码进行分页。单击该按钮时 ajax 调用会更新 tableId table。但是我有一个错误 <f:ajax> contains an unknown id 'tableId'

我不能从 ajax 更新中引用 table ID 吗?如果不是,解决方案是什么?我不能使用 datatable,因为我需要在运行时操作列标题。

<table id="tableId">
    <tr>
        <td>
            <h:commandLink ...>
                <f:ajax render="tableId" />
            </h:commandLink>  
        </td>
    </tr>
</table>

<f:ajax render>(和 <f:ajax execute>)必须引用完全有价值的 JSF 组件,而不是普通的 HTML 元素。 JSF 即会将指定的 ID 传递给 UIComponent#findComponent(),以便在组件树中找到负责生成所需的 HTML 输出片段的组件。普通的 HTML 元素不会被解释为真正的 JSF 组件,因此不会通过其 ID 在 JSF 组件树中显示。

要么让它成为真正的 JSF 组件,

<h:panelGrid id="tableId" columns="1">
    <h:commandLink ...>
        <f:ajax render="tableId" />
    </h:commandLink>
</h:panelGrid>  

或者将其包装在真正的 JSF 组件中并引用它。

<h:panelGroup id="tableIdWrapper" layout="block">
    <table id="tableId">
        <tr>
            <td>
                <h:commandLink ...>
                    <f:ajax render="tableIdWrapper" />
                </h:commandLink>  
            </td>
        </tr>
    </table>
</h:panelGroup>