为什么使用Primefaces选择器在服务器端有更好的性能?

时间:2016-10-05 21:42:59

标签: primefaces jsf-2.2

在阅读有关PrimeFaces选择器的信息时,可以找到以下信息primefaces blog

  

与常规引用相比,CPU服务器负载较少,因为在服务器端没有遍历JSF组件树来查找组件并找出客户端ID,因为通过查看dom树在客户端实现PFS

我试图创建这样一个非常简单的项目:

        <h:form>

        <p:panel id="panel2" header="Second panel">           
                <p:outputLabel for="address" value="Address"/>
                <p:inputText id="address" required="true"/>
        </p:panel>


         <p:commandButton process="@(.ui-panel)" update="@(.ui-panel)"
                             value="Process and update all panels"/>

    </h:form>

然后我在UIComponentBase上调试findComponent()方法。令人惊讶的是,无论我使用哪种选择器(@(。ui-panel)或只是panel2),它都会以相同的次数击中方法。在引用文本中表示它更好,因为组件树不在服务器端遍历。但无论使用哪个primefaces选择器,它看起来都是遍历的。我的思维方式出了什么问题? PrimeFaces选择器如何比标准选择器更好?

1 个答案:

答案 0 :(得分:4)

该博客文章已超过4年。 JSF 2.2在该日期尚未提供。使用较旧的JSF版本重试,特别是博客日期可用的版本。因此Mojarra 2.1.7或更早。

大约两年前,随着Mojarra 2.2.5的发布,Mojarra停止遍历组件树以验证ajax客户端ID。这有一些好处:1)完全按照博客中的描述保存性能,2)引用特定的ui:repeat或h:dataTable迭代轮次作为ajax客户端ID。然而,缺点是,当您输入客户端ID并且它根本不存在于树中时,您将不会得到任何反馈。在Mojarra 2.2.5之前,你会得到一个明确的例外。

另见: