题
我创建了一个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"
哪个结束。
不隶属于 StackOverflow