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

dev*_*snd 5 jsf el primefaces

我想循环遍历一些"来宾"并插入一个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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Mat*_*ndy 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>
Run Code Online (Sandbox Code Playgroud)