2012-01-21 3 views
0

안녕하세요 풍부한 열고 싶은 모든 사람 :조건부 호출 : 팝업 패널

onclick="#{searchBackingBean.showLoginPanel==true ? #{rich:component('loginPopup')}.show();':''}" 

그러나 내가지고있어 오류 : 나는 시도하고 실제로 무엇을, 조건식 내부 popupPanel이 같은 것입니다 EL과 관련이 있다면 어떻게해야 제대로 쓸 수 있습니까? 고마워요.

+0

그런 EL 표현식을 중첩 할 수 없습니다. –

답변

4

당신은 수도 없습니다 둥지 EL 식입니다. 나는 조건이 자바 스크립트에 위임 될 수 있도록 다음과 같이 표현을 재 작성하는 것이 좋습니다 :

onclick="if (#{searchBackingBean.showLoginPanel}) #{rich:component('loginPopup')}.show();" 

(이 메소드가 리턴과 같은 말이 없기 때문에 나는 불필요한 == true 비교를 제거주의하십시오/이미 부울 값을 출력 그들은 on* 특성을 향상대로 <rich:xxx><a4j:xxx> 구성 요소에서이 유일한 작품은 포스트 백에 EL 식을 다시 평가하는 것을)

참고. 표준 JSF <h:xxx> 구성 요소는 그렇게하지 않습니다. rendered 속성을 사용하여이를 해결해야합니다.

<h:commandButton> 
    <f:ajax render="script" /> 
</h:commandButton> 
<h:panelGroup id="script"> 
    <h:panelGroup rendered="#{searchBackingBean.showLoginPanel}"> 
     <script>#{rich:component('loginPopup')}.show();</script> 
    </h:panelGroup> 
</h:panelGroup> 
0

내가 할 일은 panelGroup 또는 렌더링 할 수있는 다른 컨테이너 내부에 패널을 배치하는 것입니다. 그런 다음 조건에 따라 해당 컨테이너의 렌더링 된 플래그를 설정하고 표시해야 할 경우 해당 컨테이너의 렌더링을 호출합니다. 이 같은

뭔가 :

<a4j:commandButton ... render="popup"/> 

<a4j:outputPanel id="popup" rendered="#{searchBackingBean.showLoginPanel}"> 
    <script> 
     #{rich:component('loginPopup')}.show(); 
    </script> 
</a4j:outputPanel> 

MAG, 밀로 반 데르 지