我有展示设备的桌子。下面有一个按钮,用于输入分页的页码。当点击该按钮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>
答案 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>