无法从 <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>
我有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>