使用 ajax 更新 preRenderView 组件

Update preRenderView component with ajax

有没有办法用 ajax 更新 preRenderView 组件?

一些例子:

<html>
    <f:event type="preRenderView" listener="#{bean1.load}" />
    <f:event type="preRenderView" listener="#{bean2.load}" />

    <body>  
        <div jsf:rendered="#{bean1.enabled}" >
            // some code here
        </div>

        </div jsf:rendered="#{bean2.enabled}" >
            // some code here
        </div>
    </body>
</html>

在这个例子中,我希望案例 1 的 preRenderView 仅在启用 bean1 时才被触发。在 java 代码中添加检查不是一个好主意,因为每次都会调用会话,而且我有比上面的简单示例更复杂的方法。

我可以将 f:events 包裹在任何组件中吗?向组件添加渲染属性并使用 ajax 调用更新它们?

据我所知,不允许添加任何其他组件作为 head 或 body 作为 html 标签的子项。 是否允许将 preRenderView 打包到 body 元素中并用简单的 jsf:div?

包裹起来

改为使用 preRenderComponent 事件并将那些 f:events 放在 div 中。

不过我不确定它是否能很好地与这种 JSF 绑定配合使用。您可能必须将这些 div 替换为 h:panelGroup layout="block"(这也会呈现简单的 div)。