我有这个div
<div id="name">
....
</div>
Run Code Online (Sandbox Code Playgroud)
我也有一个按钮来执行此操作:
<h:commandLink id="bttn" action="#">
<f:ajax render="name"/>
</h:commandLink>
Run Code Online (Sandbox Code Playgroud)
问题是,在执行时,它表示没有名为"name"的组件.有没有办法我可以用ajax渲染一个div 而不将它封装在一个jsf组件中?
不,没有办法.在JSF的引擎盖下,Ajax渲染大致如下:
for (String clientIdToRender : clientIdsToRender) {
UIComponent componentToRender = viewRoot.findComponent(clientIdToRender);
// ...
}
Run Code Online (Sandbox Code Playgroud)
然而,由于普通的HTML <div>是不作为可用fullworthy JSF组件的UIViewRoot#findComponent(),JSF无法找到任何东西产生更新的HTML输出.
您不一定需要将其包装在另一个JSF组件中,您也可以只使用生成HTML <div>元素的JSF组件.这是<h:panelGroup>其layout属性设置为的组件block(如"渲染块级元素").
<h:panelGroup layout="block" id="name">
...
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6436 次 |
| 最近记录: |