2014-04-09 4 views
0

나는 JSF의 초보자이며 List에 요소가 두 개 이상있는 경우 드롭 다운을 표시하려고합니다. 단일 요소가있는 List 인 경우 outputText을 표시하고 싶습니다. 여기 내 xhtmlJSF - 목록 크기에 따라 입력 유형을 변경하는 방법

<lp:repeat value="#{addBean.donation.instruments.checks}" var="check"> 
    <tr> 
    <td> 
     <ui:fragment rendered="#{addBean.checkTypes.size == 1}"> 
     <h:selectOneMenu value="#{check.checkType}"> 
      <f:selectItems value="#{addBean.checkTypes}"/> 
     </h:selectOneMenu> 
     </ui:fragment> 
     <ui:fragment rendered="#{addBean.checkTypes.size > 1}"> 
     <h:outputText value="#{addBean.checkTypes.get(0).label}"></h:outputText>     
     </ui:fragment> 
    </td> 
    </tr> 
</lp:repeat> 

checkTypesSelectItemList입니다. checkTypes에 의해 채워지는 드롭 다운이 표시되고 하나를 선택하면 맨 위에 선언 된 check 변수에 푸시됩니다. List에 요소가 하나만있는 경우 labeloutputText에 표시됩니다. 그런 일이 생기면 그 값을 check 변수에 바인딩하는 방법을 알 수 없습니다. 누군가가 올바른 방향으로 나를 가리켜 주시겠습니까? 아니면이 패턴을 구현하는 더 좋은 방법이 있습니까?

답변

0

렌더링 된 속성을 사용하여 문제없이 두 구성 요소를 사용할 수 있습니다.

'쇼'당신의 componente에 사용되거나 (true 또는 false) 어떤 논리적 인 조건을 기반으로하지 않는 렌더링

이 같은

사용 무언가 :

<h:selectOneMenu value="#{check.checkType}" rendered="#{addBean.checkTypes.size > 1}"> 
     <f:selectItems value="#{addBean.checkTypes}"/> 
    </h:selectOneMenu> 


<h:outputLabel value="value="#{addBean.checkTypes[0]}"" rendered="#{addBean.checkTypes.size == 1}"/> 
이것의 결과로 추진 될 필요가
+0

'check.checkType'과'outputLabel'은 그렇게하지 않습니다. 그냥 페이지에 출력합니다. – jhamm

관련 문제