【问题标题】:Dynamically assigning IDs to tags using an EL variable使用 EL 变量为标签动态分配 ID
【发布时间】:2012-04-03 22:47:14
【问题描述】:

我想遍历一些“客人”并动态插入一个 id

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

问题是,&lt;p:message /&gt;无法解析firstname_#{guest.uniqueID}

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

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

如何指示 jsf 或 primefaces 解析此变量?

【问题讨论】:

    标签: jsf primefaces el


    【解决方案1】:

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

    但您不需要关心 ui:repeat 中 id 的唯一性。 JSF 为您做这件事。只需给您的输入字段一个“固定”的 id 并在您的 p:message 中引用它:

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

    【讨论】:

    • 感谢您的回答,但客人号码只是对我的问题的简化,因为我需要这些 ID 来处理我的支持 bean 中的正确字段。除非有另一种方式,以另一种方式解决我的 bean,否则这还不是我的问题的解决方案。 (我试图在我的问题中更清楚地说明)
    • 不清楚为什么你需要在 backing bean 中的 id。您将 value 属性留空。它应该用于将输入绑定到支持 bean 字段。也许这就是你需要的?
    • 你是对的!现在我明白了:因为无论如何我都在遍历所有“客人”,所以我可以在循环中动态分配值绑定。 (很抱歉造成混淆,但实际上问题发生在嵌套组合中的膝盖深处)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 2016-11-16
    相关资源
    最近更新 更多