2013-05-22 2 views
1

PrimeFaces 대화 상자에 dynamic = true (동적 - 아약스를 사용하여 컨텐트를 지연로드 할 수 있음)이있는 JSF 컴포지트 구성 요소가 있습니다. 구성 요소는 재정의 된 encodeBegin 메서드 내에서 초기화됩니다. 이것은 대화 상자가 표시 될 때 발생합니다.표시 될 때만 컴포지트 구성 요소 코드 실행

동적 특성을 제거하면 대화 상자가 표시되지 않고 기존 코드가 손상 될 때도 encodeBegin 메서드가 호출됩니다.

대화 상자가 표시 될 때만 복합 구성 요소 코드를 실행할 수 있습니까?

<p:dialog id="actionsDialog" 
    widgetVar="actionsDialogWidget" resizable="false" width="800" 
    height="600" showEffect="fade" hideEffect="fade" modal="true"> 
    <h:form id="confirmationWizardForm"> 
     <acme:actionWizard name="wizard" widgetVar="wiz" bean="#{accountsBean}" 
      header="#{accountsBean.entityHeader}" 
      update="form:genericAccounts" onClose="actionsDialogWidget.hide()" /> 
    </h:form> 
</p:dialog> 

... 

<p:commandButton value="Add" 
    action="#{accountsBean.initializeEntity}" process="@this" 
    update=":actionsDialog" oncomplete="actionsDialogWidget.show()"> 
+0

대화 상자가 표시되지 않으면'visible '또는'rendered'를 false로 설정합니까? – dratewka

+0

아니요. 대화 상자의 렌더링을 제어하는 ​​속성이 없습니다. – Seitaridis

+0

그래서 클라이언트 측에서 가시성을 제어 하시겠습니까? – dratewka

답변

2

문제는 당신이 대화를위한 마크 업이 생성됩니다 것을 의미하지만, CSS 규칙에 의해 숨겨진 남아있는 클라이언트 측에서 가시성을 제어한다는 것이다 : 여기

는 코드 선택입니다.

예를 들어, dialog showcase 프라임 그래프를 분석하면 "기본"명령 버튼을 누를 때까지 대화 상자가 숨겨 지지만 대화 상자 창이 표시되지 않는 경우에도 HTML <div id="basicDialog"...이 항상 존재합니다.

대화 상자가 렌더링되면 콘텐츠도 마찬가지입니다. 동적 콘텐츠를 loding하지 않으면 멈추지 않습니다.

동적 속성을 추가하면 대화 상자가 표시 될 때 해당 내용과 함께 대화 상자를 가져 오는 데 사용되므로 동작이 변경됩니다.

관련 문제