JSF 复合组件 ID

标签 jsf jsf-2

我创建了一个 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 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}">

然而它最终会变成 id="ccId:firstName"在 HTML 中,其中 ccId是固定的或自动生成的 idmy:inputText .你也可以把它放在一边并使用
<h:inputText id="input">

最终为 id="firstName:input"在 HTML 中。

关于JSF 复合组件 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4616291/

相关文章:

jquery - 从 iFrame 关闭 primefaces 对话框

java - 这些页面包括带参数的编写函数

java - JSF 中的托管 bean

java - JAAS tomcat 登录模块传递 ip 地址的可能方法

html - primefaces 打印屏幕,页脚处有一些文本

jsf-2 - JSF View - 在操作上返回 null 不会更新 View

jsf - 以编程方式添加复合组件

jsf - primefaces 数据表中的排序

jsf - 如何控制 JSF 中的访问和权限?

ajax - 无法捕获 JSF 2 应用程序上的 ajax 错误