gpt4 book ai didi

java - 动态 doesn't work

转载 作者:行者123 更新时间:2023-12-01 15:52:24 25 4
gpt4 key购买 nike

我想使用动态 ui:include,就像这样。

<ui:repeat value="#{FormsService.getTemplates(component.form)}"
var="template">
<ui:include src="forms/#{template.id}.xhtml"/>
</ui:repeat>

不知何故,这总是会导致包含“forms/.xhtml”,就好像 #[template.id} 为空一样。但我知道#{template.id}不为空。 IE。只是像这样打印出来就给了我预期的值(value)。那么这里出了什么问题呢?如有任何帮助,我们将不胜感激。

最佳答案

这些标签有些令人困惑,因为 是作为 UIComponent 实现的,而 逻辑位于 TagHandler 中。当构建组件树时,例如在 RestoreView 阶段,会添加单个 UIRepeat 组件,但 #{template.id} 将无法正确评估。它不会评估,因为 UIRepeat 变量"template"仅在组件处理期间可用,而在树构建期间不可用。

你有两个选择。第一个是您可以使用 而不是 。这是一个简单的解决方案,可能会很适合您。它有一个小缺点:如果同一模板多次出现,则组件树将为每次出现的模板组件包含一个单独的副本。因此,内存和 CPU 性能都会受到影响。

另一个选择是使用真正的动态包含组件。不幸的是我还没有找到可用的。我设法实现了这样的组件,但它不是一个非常方便的解决方案,因为它还需要稍微修改的 UIRepeat 版本。我们必须采用这种方法,因为 的性能损失对我们来说太严重了。

关于java - 动态 <ui :include> doesn't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5745643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com