gpt4 book ai didi

jsf - 页面加载后加载面板内容

转载 作者:行者123 更新时间:2023-12-04 10:41:34 25 4
gpt4 key购买 nike

我有带面板的仪表板:

<p:dashboard id="board" model="#{dashboardOptionsMB.model}">            
<c:forEach var="item" items="#{dashboardOptionsMB.emsWidgets}">
<ui:include src="/pages/dashboard/panel.xhtml">
<ui:param name="widget" value="#{item.webDashboardDbBean}" />
<ui:param name="emsValue" value="#{item.emsValue}" />
</ui:include>
</c:forEach>
</p:dashboard>

我在渲染页面之前加载了一个包含内容的列表 dashboardOptionsMB.emsWidgets,这适用于面板组件:

panel.xhtml:

    <p:panel id="#{widget.widgetid}" header="#{widget.widgetheader}" closable="true" >
<h:outputText value="#{emsValue.value}" />
...
</panel>

所以,在每次渲染之前,我都会用这个方法用所有元素和内容初始化列表:

DashboardOptionsMB:

    private void initWidgets(WebDashboardsDbBean dashboard) {
//dashboard is JPA entity from database
emsWidgets = dashboard.getWidgets();
...
}

我想要实现的是在页面加载后动态加载每个面板内容。例如每个面板应该调用:

initWidget(String widgetId)

页面加载后,以及该方法完成后更新其内容。

最佳答案

使用 p:remoteCommand创建一些将在加载正文时执行的 Ajaxified Javascript:

<h:body onload="loadWidgets()">
<!-- content -->
<p:remoteCommand name="loadWidgets"
update="#{widget.widgetid}"
actionListener="#{dashboardOptionsMB.initWidgets}"/>
</h:body>

或者,您可以使用 autoRun="true" 参数让它在文档准备好时执行:

<p:remoteCommand name="loadWidgets" 
update="#{widget.widgetid}"
actionListener="#{dashboardOptionsMB.initWidgets}"
autoRun="true"/>

另请参阅:

关于jsf - 页面加载后加载面板内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20544359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com