Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 Primefaces动态覆盖面板,无需内部呈现页面的其余部分_Jsf 2_Primefaces - Fatal编程技术网

Jsf 2 Primefaces动态覆盖面板,无需内部呈现页面的其余部分

Jsf 2 Primefaces动态覆盖面板,无需内部呈现页面的其余部分,jsf-2,primefaces,Jsf 2,Primefaces,我们在Wildlfy 8.1.0决赛中使用Primefaces 5.09和JSF 2.1.2 我们有一个包含大量内容的datatable,它需要花费相当长的时间来加载(这是正常的) 在每一行中,我们都有一个commandLink,它引用在合成中定义的动态加载的overlypanel: <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmln

我们在Wildlfy 8.1.0决赛中使用Primefaces 5.09和JSF 2.1.2

我们有一个包含大量内容的datatable,它需要花费相当长的时间来加载(这是正常的) 在每一行中,我们都有一个commandLink,它引用在合成中定义的动态加载的overlypanel:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

    <h:panelGroup>
        <p:commandLink id="CID" title="#{messageId}" type="button" value="#{messageId}" ajax="true" actionListener="#{SyncClientPopupBean.setSyncClientById(messageId)}" update="grid" disabled="#{not Shiro.isPermitted('admin:syncclient:read')}" />

        <p:overlayPanel for="CID" dynamic="true" at="right top" my="left bottom" appendTo="@(body)">
            <p:panelGrid id="grid" columns="2" styleClass="ui-datatable-auto-width">
                  <...../>
            </p:panelGrid>
        </p:overlayPanel>
    </h:panelGroup>
</ui:composition>

Ajax请求本身工作正常,因为结果只包含OverlyPanel的内容。 我们现在的问题是,OverlyPanel上的更新似乎也会在加载datatable等项目时在内部呈现页面的其余部分。 因此,为面板请求这个非常小的内容大约需要加载整个数据表的时间

整个页面的支持bean和覆盖已经分离


有没有可能让Primefaces只渲染这一个组件?

所以每一行都有这样一个覆盖面板?而且在同一时间打开的门不会超过一个?如果是这样的话,为什么不只使用表外的一个,它的内容会根据所选行动态更新?现在它会呈现给每一行。如果我在数据表外放置一个OverlyPanel,它能解决我的问题吗?如果是的话,我会看看是否能找到合适的解决办法。关键是,它被用作跨多个数据表的组合。但是,如果将它放在外部是唯一的解决方案,我将不得不将它分成两个组合。我尝试使用一个覆盖面板以及数据表外部的对话框。即使我把它们放在一个额外的表单中,并告诉commandLink只处理带有对话框的数据fpr,datatable也会被访问。似乎Primefaces在每个ajax请求中呈现(或至少加载)数据表,而不管是否需要。所以每一行都有这样的覆盖面板?而且在同一时间打开的门不会超过一个?如果是这样的话,为什么不只使用表外的一个,它的内容会根据所选行动态更新?现在它会呈现给每一行。如果我在数据表外放置一个OverlyPanel,它能解决我的问题吗?如果是的话,我会看看是否能找到合适的解决办法。关键是,它被用作跨多个数据表的组合。但是,如果将它放在外部是唯一的解决方案,我将不得不将它分成两个组合。我尝试使用一个覆盖面板以及数据表外部的对话框。即使我把它们放在一个额外的表单中,并告诉commandLink只处理带有对话框的数据fpr,datatable也会被访问。似乎Primefaces在每个ajax请求中呈现(或至少加载)数据表,无论是否需要