2012-07-10 3 views
1

JSF 2.0 구성 요소는 다른 구성 요소의 컨테이너이지만 자체 HTML 요소를 생성하지 않습니다.자체 HTML 요소가없는 JSF 구성 요소

제 상황으로는 (이미 스타일이 지정된) jsf-xhtml 구성 요소 페이지가 있습니다. 이제는 많은 렌더링을 비활성화해야합니다.

<ui:component> 
    <h:panelGroup layout="block" rendered="#{not empty user.registrations}">...</> 
    <h:panelGroup layout="block" rendered="#{not empty user.registrations}">...</> 
    <h:panelGroup layout="block" rendered="#{not empty user.registrations}">...</> 
    <h:panelGroup layout="block" rendered="#{not empty user.registrations}">...</> 
</ui:component> 

그러나 전번에는 rendered="#{not empty user.registrations}"을 지정하고 싶지 않습니다. 대신 내가 좋아하는 몇 가지 구성 요소를 wrapp 할 : 페이지가 이미 스타일 때문에

<ui:component> 
    <xxxx rendered="#{not empty user.registrations}"> 
     <h:panelGroup layout="block">...</> 
     <h:panelGroup layout="block">...</> 
     <h:panelGroup layout="block">...</> 
     <h:panelGroup layout="block">...</> 
    </xxxx> 
</ui:component> 

(그리고 나는이가 깨지기 쉬운 방법으로 이루어집니다 두려움)을 생성하지 않는 내가 JSF 구성 요소 (xxxx)가 필요합니다 자신의 HTML 요소는 div 정도입니다. 그런 jsf- 구성 요소가 종료됩니까? 당신의 또 다른 <h:panelGroup> 4 <h:panelGroup>

<c:if test="#{not empty user.registrations}"> 
    <h:panelGroup layout="block">...</> 
    <h:panelGroup layout="block">...</> 
    <h:panelGroup layout="block">...</> 
    <h:panelGroup layout="block">...</> 
</c:if> 

하거나 포장 할 수 있습니다 :

+0

'layout = "block"'을 제거하면됩니까? – BalusC

답변

0

이 시도

<h:panelGroup rendered="#{not empty user.registrations}"> 
    <h:panelGroup layout="block">...</> 
    <h:panelGroup layout="block">...</> 
    <h:panelGroup layout="block">...</> 
    <h:panelGroup layout="block">...</> 
</h:panelGroup> 
+0

JSF 2.0에서'c : if '가 허용되지 않는다고 생각합니다 Facelets – Ralph

+0

@Ralph : http://stackoverflow.com/questions/3342984/jstl-in-jsf2-facelets-makes-sense – BalusC

3

primefaces를 사용하는 경우 간단한 해결책이 있습니다.

p:outputPanel을 사용하십시오.

그렇지 않은 경우 h:panelGroup을 사용할 수도 있습니다. 이것은 자체의 형식을 가지고 있지 않습니다.