Jsf 2 Can';动态设置组件标识符
我在数据表中有一个Jsf 2 Can';动态设置组件标识符,jsf-2,primefaces,identifier,Jsf 2,Primefaces,Identifier,我在数据表中有一个p:inputText字段,我正在尝试动态设置它的标识符 但是,我得到以下错误: 组件标识符不能是零长度字符串 用作id的字符串均不为null或长度为零 <h:form id="updateform"> <p:dataTable id="updatetable" value="#{EditingBean.row}" var="column" style="width: 9
p:inputText
字段,我正在尝试动态设置它的标识符
但是,我得到以下错误:
组件标识符不能是零长度字符串
用作id的字符串均不为null或长度为零
<h:form id="updateform">
<p:dataTable id="updatetable" value="#{EditingBean.row}" var="column"
style="width: 983px; overflow-x: auto; white-space: normal;">
<f:facet name="header">
<h:outputText value="#{EditingBean.currentStatement.statementName}" />
</f:facet>
<p:column rendered="#{column.display}" style="white-space: normal;">
<h:outputText value="#{column.alias}" />
</p:column>
<p:column rendered="#{column.display}" style="white-space: normal;">
<p:inputText id="#{column.name}" value="#{column.value}" />
</p:column>
<f:facet name="footer" style="text-align: right;">
<h:commandButton value="Update" action="#{EditingBean.update()}"
ajax="false" />
</f:facet>
</p:dataTable>
</h:form>
必须在视图生成期间设置
id
属性
但是,由于{column}
声明为
,因此它仅在视图渲染期间可用。由于它在视图构建时间之后运行,因此在视图构建时间内它是null
我不确定具体的功能需求,您认为这样做是正确的解决方案。代码的自文档化程度不足以正确猜测它。所以很难给出一个合适的答案。在任何情况下,您基本上有两种选择:
...
<p:inputText id="name" ... />
JSF已经负责在HTML输出中生成唯一的ID(前缀为行索引)。右键单击页面并查看源代码以自己查看styleClass
上设置一个CSS类,比如styleClass=“phone”
,styleClass=“url”
,styleClass=“email”
,等等。这些输入无论如何都不可能是唯一的,所以你的id
方法首先已经毫无意义了。使用jQuery,您可以轻松地获取它们,如$(“.phone”)
、$(“.email”)
,等等。一列通常有多行,对吗?所以一列中的输入数和行数一样多,对吗?因此,例如,10行,您最终有10个电话输入,等等,这很好。这仍然不意味着这些输入在HTML上下文中是唯一的。它们仍然有多个,只是有条件地显示/隐藏。因此,CSS类是正确且最简单的解决方案。但我的问题是,在验证(我使用的是
)时,我需要访问字段。是否可以像通过id一样通过样式类访问组件?
<p:inputText id="name" ... />