如何使用切换面板更新primefaces数据网格而不会丢失其状态

时间:2018-01-31 15:02:27

标签: jsf primefaces jsf-2

我有一个带有一堆可切换面板的Primefaces数据网格。

这些面板由ajax民意调查更新。

我想在不失去切换状态的情况下刷新面板。

updateNodes方法只询问新值并返回datagrid使用的值对象...

这是我的代码:

    <h:form id="server_node_form">
        <p:poll interval="10" listener="#{serverNodesView.updateNodes}" update="nodeDataGrid" />
        <p:dataGrid var="node"
            value="#{serverNodesView.dragoNodeGroup.dragoNodes}" columns="3"
            layout="grid" rows="10" paginator="false" id="nodeDataGrid" >

            <f:facet name="header">
            Estados de los nodos del servidor
            </f:facet>
            <p:panel toggleable="true" collapsed="true"
                toggleTitle="Información detallada del nodo">
                <f:facet name="header">
                    <p:panelGrid columns="2" layout="grid"
                        styleClass="ui-panelgrid-blank"
                        columnClasses="ui-grid-col-3,ui-grid-col-9">
                        <p:graphicImage
                            name="images/server_#{node.status.toLowerCase()}.png" width="64"
                            height="64" />
                        <p:panelGrid columns="1" styleClass="ui-panelgrid-blank">
                            <h:outputText value="#{node.hostname}"
                                style="font-weight: bold; font-size: 120%" />
                            <h:outputText value="#{node.ip}: #{node.status}"
                                style="font-weight: bold; font-size: 120%" />
                            <h:outputText value="#{node.alias}"
                                style="font-weight: bold; font-size: 90%" />
                        </p:panelGrid>
                    </p:panelGrid>
                </f:facet>
                <p:panelGrid columns="2" layout="grid">
                    <p:outputPanel>
                        <h:panelGrid columns="2">
                            <h:outputText value="CPU (utilizada):" />
                            <h:outputText value="#{node.cpuUsed}" />
                            <h:outputText value="RAM (utilizada):" />
                            <h:outputText value="#{node.ramUsed}" />
                        </h:panelGrid>
                    </p:outputPanel>
                    <p:outputPanel>
                        <h:panelGrid columns="2">
                            <h:outputText value="ETH1 (entrada):" />
                            <h:outputText value="#{node.net1in}" />
                            <h:outputText value="ETH1 (salida):" />
                            <h:outputText value="#{node.net1out}" />
                        </h:panelGrid>
                    </p:outputPanel>
                </p:panelGrid>
            </p:panel>
        </p:dataGrid>    
    </h:form>

1 个答案:

答案 0 :(得分:0)

最后,我找到了一种更新组件而不会失去面板切换状态的方法... bean方法更新了面板使用的数据数组,而poll只更新文本(需要在浏览器中检查)找到组件使用的类)

在poll标签中,您可以告诉Primefaces仅更新某些组件类......它被称为&#34; PrimeFaces选择器&#34;我在stackoverflow中的问题中找到了它

yaml.YAMLToJSON

Understanding PrimeFaces process/update and JSF f:ajax execute/render attributes

<div class="ui-panelgrid-cell ui-g-12 ui-md-6"><div id="tabViewForm:tabView:server_node_form:nodeDataGrid:0:j_idt70" class="ui-outputpanel ui-widget">