小编apo*_*pod的帖子

当呈现的属性被包装时,不会在复合组件上调用encodeAll()

当我做:

<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>
Run Code Online (Sandbox Code Playgroud)

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 />
Run Code Online (Sandbox Code Playgroud)

后一个例子当然是无用的,因为我想要动态输入。现有(默认)组件如 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
Run Code Online (Sandbox Code Playgroud)

java jsf composite-component jsf-2

1
推荐指数
1
解决办法
377
查看次数

标签 统计

composite-component ×1

java ×1

jsf ×1

jsf-2 ×1