使用EL变量动态地为标记分配ID

时间:2012-03-19 12:39:33

标签: jsf primefaces el

我想循环遍历一些“来宾”并插入一个id dynanimally

<ui:repeat value="#{guestList}" var="guest">
    <p:inputText id="firstname_#{guest.uniqueID}" value="" label="Firstname" />
    <p:message for="firstname_#{guest.uniqueID}" />
</ui:repeat>

问题是,<p:message />无法解决firstname_#{guest.uniqueID}

  

javax.faces.FacesException - 在视图中找不到组件“firstname_1”。   在org.primefaces.component.message.MessageRenderer.encodeEnd(MessageRenderer.java:41)

如果我在循环中写一个常量,它没有任何问题,并且我确信该变量可以被解析,因为我可以在该循环中输出它。

如何指示jsf或primefaces来解析这个变量?

1 个答案:

答案 0 :(得分:9)

您无法在id属性中使用EL表达式。

但是你不需要关心ui中id的唯一性:重复。 JSF为您做到了。只需将输入字段设为“固定”ID,然后在p:message

中引用它
<ui:repeat value="#{guestList}" var="guest">
    <p:inputText id="firstname" value="" label="Firstname" />
    <p:message for="firstname" />
</ui:repeat>