Jsf 2 如何在JSF中动态设置IDs中的数字

Jsf 2 如何在JSF中动态设置IDs中的数字,jsf-2,facelets,uirepeat,Jsf 2,Facelets,Uirepeat,我在JSF2和Facelets的帮助下设计了一个JavaEE网站。beyond代码只是JSF代码的一个示例 当网站的用户想要创建新用户但忘记设置例如firstname时,会发生错误,元素将高亮显示(元素周围的红色和红色边框)。 为了突出显示,我必须使用属性: class=“#{faceletUtils.getLabelStyleClass('createUsersForm:allUsers:0:firstName')}” 问题是我必须动态地设置数字0,但据我所知,JSF中不允许嵌套。我可以使用#

我在JSF2和Facelets的帮助下设计了一个JavaEE网站。beyond代码只是JSF代码的一个示例

当网站的用户想要创建新用户但忘记设置例如firstname时,会发生错误,元素将高亮显示(元素周围的红色和红色边框)。 为了突出显示,我必须使用属性:

class=“#{faceletUtils.getLabelStyleClass('createUsersForm:allUsers:0:firstName')}”

问题是我必须动态地设置数字0,但据我所知,JSF中不允许嵌套。我可以使用#{curUser.number}来获取号码

问题:如何设置for和class属性中的数字

for=“createUsersForm:allUsers:0:firstName” class=“#{faceletUtils.getLabelStyleClass('createUsersForm:allUsers:0:firstName')}”

JSF代码示例:

<h:form id="createUsersForm">
  <ui:repeat id="allUsers" value="#{createUserController.users}" var="curUser">
    <div class="formLine">
      <label for="createUsersForm:allUsers:0:firstName" class="#{faceletUtils.getLabelStyleClass('createUsersForm:allUsers:0:firstName')}">
        <h:outputText value="#{userStaticText['user.firstName.label']}"/>
      </label>
      <h:inputText id="firstName" value="#{curUser.firstName}" class="#{faceletUtils.getLabelStyleClass('createUsersForm:allUsers:0:firstName')}"/>
    </div>
  </ui:repeat>
</h:form>

致以最良好的祝愿, Jana

只需使用
而不是
。JSF将自动为值使用正确的
。此外,您可以使用
#{component.clientId}
获取当前组件的客户机ID(尽管我认为突出显示无效字段的特定功能需求可以通过某种方式解决)


请注意,我还修复了
的错误
属性。

只需使用
而不是
。JSF将自动为
值使用正确的
。此外,您可以使用
#{component.clientId}
获取当前组件的客户机ID(尽管我认为突出显示无效字段的特定功能需求可以通过某种方式解决)


请注意,我还修复了
的错误
属性。

非常感谢。解决了我的问题。我必须以这种方式强调元素,因为这就像一个惯例。非常感谢。解决了我的问题。我必须以这种方式强调元素,因为这就像一个惯例。
<h:form id="createUsersForm">
  <ui:repeat id="allUsers" value="#{createUserController.users}" var="curUser">
    <div class="formLine">
      <h:outputLabel for="firstName" styleClass="#{faceletUtils.getLabelStyleClass(component.clientId)}"
          value="#{userStaticText['user.firstName.label']}"/>
      <h:inputText id="firstName" value="#{curUser.firstName}" styleClass="#{faceletUtils.getLabelStyleClass(component.clientId)}"/>
    </div>
  </ui:repeat>
</h:form>