使用ajax渲染div

Nac*_*321 1 jsf jsf-2

我有这个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组件中

Bal*_*usC 5

不,没有办法.在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)

也可以看看: