2012-03-19 42 views
5

我要循环的一些“客人”,并插入一个ID动态分配ID来标记dynanimally使用EL变量

<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来解决这个变量?

回答

9

您不能在id属性中使用EL表达式。

但是你不需要关心用户界面的独特性:重复。 JSF为你做。只要给你的输入域的“固定”的id和引用它的p:message

<ui:repeat value="#{guestList}" var="guest"> 
    <p:inputText id="firstname" value="" label="Firstname" /> 
    <p:message for="firstname" /> 
</ui:repeat> 
+0

谢谢你的答案,但客人数是我的问题的一个单纯的简化,因为我需要这些ID为解决权领域在我的支持豆里面。除非有另一种方式,否则以另一种方式来解决我的bean问题,这还不是我的问题的解决方案。 (我试图让我的问题更清楚) – devsnd 2012-03-19 12:57:46

+0

目前还不清楚为什么你需要在后台bean中使用id。您将值属性留空。它应该用于将输入绑定到后台bean字段。也许这就是你需要的? – 2012-03-19 13:03:26

+0

你是对的!现在我明白了:既然我遍历所有的“宾客”,我可以在循环中动态地分配值绑定。 (抱歉,混淆,但实际上问题发生在嵌套合成中膝深) – devsnd 2012-03-19 13:09:48