gpt4 book ai didi

java - 包装渲染属性时未在复合组件上调用 encodeAll()

转载 作者:行者123 更新时间:2023-11-29 03:35:51 27 4
gpt4 key购买 nike

当我这样做时:

<h:form>
<ui:repeat ...>
<ui:fragment rendered="#{xyz.type eq 1}"
<h:inputText value="#{xyz}"/>
</ui:frament>

<ui:fragment rendered="#{xyz.type eq 2}"
<my:component value="#{xyz}"/>
</ui:frament>
<ui:repeat />
</h:form>

encodeAll() 不会在 my:component 上被调用,随后不会显示现有值。

如果我执行以下操作

    <ui:repeat ...>
<ui:fragment rendered="#{xyz.type eq 1}"
<h:inputText value="#{xyz}"/>
</ui:frament>

<ui:fragment rendered="#{xyz.type eq 2}"
<h:form>
<my:component value="#{xyz}"/>
</h:form>
</ui:frament>
<ui:repeat />

后一个例子当然没用,因为我想要动态输入。现有(默认)组件作为 datepicker、inputtext、... 功能正常,只有我的组件不显示现有值(未调用 encodeAll)。

我还尝试了 h:datatable 组件而不是 ui:repeat(不知道为什么),结果相同。

INFO: Initializing Mojarra 2.1.6 (SNAPSHOT 20111206) for context '/webclient'
INFO: Running on PrimeFaces 3.5
INFO: Running on PrimeFaces Extensions 0.6.3

最佳答案

我无法根据给定的代码重现您的问题,但是当我将它包装在 PrimeFaces 组件中时我可以重现它。例如。什么时候<ui:fragment><p:panel> 取代(没有 rendered !)。这是由 PrimeFaces CoreRenderer 引起的不打电话 UIComponent#encodeAll()renderChildren()方法,但是 encodeBegin() , encodeChildren()encodeEnd()个别地。

如果您在 encodeBegin() 中执行工作而不是 encodeAll() ,那么它应该工作。我相应地更新了我的复合组件文章。

关于java - 包装渲染属性时未在复合组件上调用 encodeAll(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15613725/

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