【问题标题】:JSF Composite component IDJSF 复合组件 ID
【发布时间】:2011-06-04 17:11:32
【问题描述】:

我创建了一个 JSF 复合组件来扩展 h:inputBox

        <p class="label clear">
            <label for="#{cc.attrs.id}" class="">
                #{cc.attrs.label}:
            </label>
        </p>
        <p>
            <h:inputText id="#{cc.attrs.id}" value="#{cc.attrs.value}" 
                size="#{cc.attrs.size}" />
            <ui:fragment rendered="#{cc.attrs.optional eq 'optional'}">
                <span class="optional">Optional</span>
            </ui:fragment>
        </p>

要使用这个组件..

<my:inputText id="firstName" label="First Name" value="#{nameTO.firstName}"/>

当此组件在浏览器上呈现时,ID 的格式为“firstName:firstName”。

<input type="text" value="" name="firstName:firstName" id="firstName:firstName" gtbfieldid="3028">

这是 JSF 2.0 模板的标准命名约定吗?我没有通过 JSF 1.2 Facelets 模板得到这个。 有什么方法可以将 ID 生成为“firstName”而不是“firstName:firstName”

【问题讨论】:

    标签: jsf jsf-2


    【解决方案1】:

    JSF 2.0 复合组件与 JSF 1.x/2.x Facelets 模板不同。

    复合组件也有自己的 ID。您基本上是在复合组件实现中的组件上重用它。您可能需要考虑为实现中的组件添加或重命名另一个 ID 属性。例如

    <my:inputText name="firstName" label="First Name" value="#{nameTO.firstName}" />
    

    <h:inputText id="#{cc.attrs.name}">
    

    然而,它会在 HTML 中以id="ccId:firstName" 结尾,其中ccIdmy:inputText 的固定或自动生成的id。您也可以将其放在一边并使用

    <h:inputText id="input">
    

    在 HTML 中以 id="firstName:input" 结尾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 2013-03-23
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 2012-04-01
      相关资源
      最近更新 更多