我创建了一个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>
Run Code Online (Sandbox Code Playgroud)
要使用此组件..
<my:inputText id="firstName" label="First Name" value="#{nameTO.firstName}"/>
Run Code Online (Sandbox Code Playgroud)
在浏览器上呈现此组件时,ID的格式为"firstName:firstName".
<input type="text" value="" name="firstName:firstName" id="firstName:firstName" gtbfieldid="3028">
Run Code Online (Sandbox Code Playgroud)
这是JSF 2.0模板的标准命名约定吗?我没有用JSF 1.2 Facelets模板获得这个.有没有办法生成ID只是"firstName"而不是"firstName:firstName"
JSF 2.0复合组件与JSF 1.x/2.x Facelets模板不同.
复合组件也有自己的ID.您基本上是在复合组件实现中的组件上重用它.您可能需要考虑为实现中的组件添加或重命名另一个ID属性.例如
<my:inputText name="firstName" label="First Name" value="#{nameTO.firstName}" />
Run Code Online (Sandbox Code Playgroud)
同
<h:inputText id="#{cc.attrs.name}">
Run Code Online (Sandbox Code Playgroud)
然而,它最终会像id="ccId:firstName"在HTML中那样ccId是固定的或自动生成id的my:inputText.你也可以把它留下来使用
<h:inputText id="input">
Run Code Online (Sandbox Code Playgroud)
最终结果与id="firstName:input"HTML相同.
| 归档时间: |
|
| 查看次数: |
8748 次 |
| 最近记录: |