在ui:repeat中的h:outputLabel的属性问题

时间:2012-03-21 17:23:05

标签: jsf

我有以下代码,我想为它们渲染radioButtons和标签。由于selectOneRadio和selectItem重新设计了布局,我决定使用纯HTML作为输入radioButtons。

<h:panelGrid columns="6">
    <ui:repeat value="#{myBean.list}" var="item">
        <input id="#{item.innerList[0].id}" type="radio" name="radioItem" value="#{item.innerList[0].id}" />
        <h:outputLabel for="#{item.innerList[0].id}" value="#{item.label}" />
    </ui:repeat>
</h:panelGrid>

当尝试使用outputLabel为它们分配标签时,它会在HTML中呈现类似的属性:

j_idt94:0:theidiassigned

包含此代码的标记表单中的prependId标志设置为false,并且在文档中,outputLabel的其他包含标记的属性中没有此标志。

1 个答案:

答案 0 :(得分:2)

ui:repeat组件是NamingContainer。它控制着孩子的client identifier

for上的h:outputLabel属性通常会查找具有匹配组件标识符或客户端标识符的组件。

所以,对于这个标记:

<foo:someNamingContainer id="x">
  <h:inputText id="foo" />
  <h:outputLabel for="foo" />
</foo:someNamingContainer>

...标签将发出匹配的命名空间标识符<label for="...:x:foo"

由于您使用的是直接的XHTML <input>元素,因此没有匹配的具有匹配ID的JSF组件。

请考虑仅使用XHTML <label>元素。