在阅读有关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选择器如何比标准选择器更好?
答案 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之前,你会得到一个明确的例外。