2012-09-26 5 views
1

JSF2 및 Facelets를 사용하여 JavaEE 웹 사이트를 디자인합니다. 그 너머의 코드는 JSF 코드가 어떻게 생겼는지 보여주는 예일뿐입니다.JSF에서 ID 내에서 숫자를 동적으로 설정하는 방법

웹 사이트 사용자가 새 사용자를 만들고 싶지만 예를 들어 설정하지 않은 경우. 첫 번째 이름은 오류가 발생하고 요소가 강조 표시됩니다 (요소 주위에 빨간색 및 빨간색 프레임).

문제는 내가 숫자 0을 설정해야한다는 것입니다

클래스 = "# {faceletUtils.getLabelStyleClass ('firstName을 createUsersForm : ALLUSERS : 0')}"나는 강조를 들어 는 속성을 사용해야합니다 동적으로하지만 JSF에서는 중첩이 허용되지 않는다는 것을 알고 있습니다. 숫자를 얻기 위해 # {curUser.number}를 사용할 수 있습니다.

질문 : for 및 class 속성에 숫자를 어떻게 설정합니까?

= 대한

"createUsersForm : ALLUSERS : 0 인 firstName" 클래스 = "# {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> 

안부, 야나가

답변

1

그냥 <h:outputLabel> 대신 <label> 사용합니다. JSF는 자동으로 오른쪽 for 값을 사용합니다. 또한 #{component.clientId}을 사용하여 현재 구성 요소의 클라이언트 ID를 가져올 수 있습니다 (잘못된 필드 강조 표시의 특정 기능 요구 사항은 much simpler 방식으로 해결할 수 있다고 생각하지만). 나뿐만 아니라 <h:inputText>의 잘못된 class 속성을 고정

<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> 

참고.

+0

대단히 감사합니다. 이 내 문제를 해결했습니다. 컨벤션과 같기 때문에 이런 식으로 요소를 강조해야합니다. –

관련 문제