我创建了一个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的格式为“姓:名字”

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

这是一个标准的命名约定与JSF 2.0模板?我没有JSF 1.2 Facelets的模板,得到这个。 是否有任何方式来生成ID如刚才的“名字”,而不是“姓:名字”

有帮助吗?

解决方案

一个JSF 2.0复合部件是不一样的一个JSF的1.x / 2.x的Facelets的模板。

的复合元件具有其自己的ID,以及。你基本上重复使用它的合成成分的执行元件。你可能要考虑添加或重命名在执行元件的另一个ID属性。 E.g。

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

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

这将然而最终成为在HTML id="ccId:firstName"其中ccId要么id的固定或自动生成的my:inputText。你也可以把它拿走并使用

<h:inputText id="input">

如HTML id="firstName:input"哪个结束。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top