使用ajax渲染div

时间:2013-09-12 16:00:33

标签: jsf jsf-2

我有这个div

<div id="name">
    ....
</div>

我也有一个按钮来执行此操作:

<h:commandLink id="bttn" action="#">
    <f:ajax render="name"/>
</h:commandLink>

问题在于,在执行时,它表示没有名为“name”的组件。有没有办法可以使用ajax 渲染div而不将其封装在jsf组件中

1 个答案:

答案 0 :(得分:5)

不,没有办法。在JSF的引擎盖下,Ajax渲染大致如下:

for (String clientIdToRender : clientIdsToRender) {
    UIComponent componentToRender = viewRoot.findComponent(clientIdToRender);
    // ...
}

但是,由于普通HTML <div> UIViewRoot#findComponent()提供的完全可用的JSF组件,因此JSF无法找到任何内容来生成更新的HTML输出。

您不一定需要将其包装在另一个JSF组件中,您也可以只使用一个生成HTML <div>元素的JSF组件。这是<h:panelGroup>组件,其layout属性设置为block(例如,“渲染block level元素”)。

<h:panelGroup layout="block" id="name">
    ...
</h:panelGroup>

另见: