【问题标题】:JSF ui:include downsideJSF ui:包括缺点
【发布时间】:2011-06-14 09:22:54
【问题描述】:

我有这个 Web 应用程序,其中一个模块使用了过多的 ui:include。

例如

页面 1.0 包括 --> page1.1 包括页面 2.0 包括 --> 页面 2.1
第 1.0 页包含 --> 第 1.2 页包含第 3.0 页包含 --> 第 3.1 页
第 1.0 页包含 --> 第 1.3 页包含第 4.0 页包含 --> 第 4.1 页

等等..

所以简而言之,该模块的登录页面有 16 个 ui:include 并且几乎每个 ui:include 都有另一个 ui:include (最多 3 层)。

现在我的问题是,使用太多 ui:include 是否存在任何已知的性能问题?

谢谢,

【问题讨论】:

  • 感谢您提出这个问题。一些 JSF 专家(TomEE/openejb 提交者)告诉我,render="..." 被调用了 6 次,这会影响性能,所以我正在检查我的应用程序并将 render="..." 替换为 ui:包括 src="..."。我刚刚问完自己这个问题,从我所见和经历的情况来看, ui:include 不会“不”影响性能;一个包含许多组件的巨大页面,'和'许多渲染的="{EL 表达式访问 bean 属性}" 会阻碍性能。

标签: jsf user-interface include


【解决方案1】:

我的猜测是它的性能与将所有页面合并到一个页面中的性能相同。由于这就是包含的作用,如果您有一个页面要在其他页面中重复,那么制作一个页面并将其包含在其他页面中会更容易。

包含只是让页面更易于配置和查看我猜

【讨论】:

  • 感谢您的回答,这样做的开发人员确实非常出色,因为它使页面更清洁和可重用。我现在的问题是如何让这个模块加载得更快,一些调用在 ajax 中,有时 f:ajax 的渲染属性找不到它应该渲染的 id。
  • 这是我的代码:'
  • 基本上不应该减慢页面的加载速度,首先它会添加静态的所有内容,然后它会开始做剩下的事情。加载时间可能是因为页面中有很多组件,并且由于JSF将所有组件添加到隐藏字段并保留在页面上,即使您不使用它们。
  • 感谢 rafael,我们会想办法减少页面及其子页面内的组件。我认为我们别无选择,只能重新设计此页面,:D:D 再次感谢。
【解决方案2】:

如果某些包含的组件仅有条件地显示,则将它们包装在一个 outputPanel 中,并使用与它们的显示相关联的渲染属性。对于每个包含有条件查看的内容,如下所示。

<a4j:outputPanel rendered="#{myBean.showInclude2}">
    <ui:include src="page2.0.xhtml" />
</a4j:outputPanel>

关于并非所有组件都需要基于 Rafael's answer 中的 cmets 的假设

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    相关资源
    最近更新 更多