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

时间:2015-05-18 07:11:20

标签: html ajax jsf jsf-2

我有展示设备的桌子。下面有一个按钮,用于输入分页的页码。当点击该按钮ajax时,呼叫会更新tableId表。但是我有一个错误<f:ajax> contains an unknown id 'tableId'

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

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

1 个答案:

答案 0 :(得分:1)

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