2012-10-03 3 views
0

모달 팝업의 헤더를 chatBean.selectedUser으로 표시하고 싶습니다. 발생한 일은 이벤트 전에 onclick 이벤트가 실행되어 onclick 이벤트가 발생하면 페이지가 새로 고쳐지지 않습니다. 따라서 chatBean.selectedUser에 포함 된 값으로 모달 팝 헤더를 가져올 수 없습니다. 페이지가 제출 된 후에 값이 chatbean.selectedUser 인 모달 팝업의 헤더를 표시 할 수 있습니까?액션 이벤트 후 어떤 이벤트가 시작됩니까?

다음은 뷰의 관련 부분입니다 :

<h:form> 
    <p:selectOneMenu value="#{chatBean.selectedUser}" id="select"> 
     <f:selectItems value="#{chatBean.friendList}" var="users" itemLabel="#{users.firstName}" itemValue="#{users.firstName}"/> 
    </p:selectOneMenu> 
    <p:commandButton id="basic" value="Basic" onclick="dlg.show()" type="button" action="#{chatBean.refresh}"></p:commandButton>  
    <p:dialog id="modalDialog" header="#{chatBean.selectedUser}" widgetVar="dlg" modal="true" height="100"> 
     <h:outputText value="This is a Modal Dialog." /> 
     <h:inputText></h:inputText> 
    </p:dialog> 
</h:form> 

답변

2

액션이되지 전에 완료 될 경우에만 대화 상자를 표시해야합니다. 대신 oncomplete 속성을 사용하십시오.

<p:commandButton ... oncomplete="dlg.show()" /> 

대화 상자의 내용을 열기 전에 명시 적으로 업데이트해야합니다. 나는 당신의 코드에서 어디에도 그것을 보지 못한다. 아마도 RequestContext#update() 또는 뭔가를 사용하고 있지만 일반적으로 update 속성을 사용합니다.

<p:commandButton ... update="modelDialog" oncomplete="dlg.show()" /> 

또한 type="button"은 이상합니다. 이 방법은 전혀 호출되지 않을 것이지만, 아마도 이것은 단지 부주의 한 실험의 남은 것일뿐입니다. 그것을 제거하십시오.

+0

와우 작동합니다. 하지만 모달 대화 상자가 나타나면 배경을 액세스 가능하게 만들 수 있습니까? 모달 대화 상자가 나타나면 백그라운드의 모든 항목이 비활성화됩니다. –

+0

모달 대화 상자에서는 정상입니다. 그냥'modal = "true"'를 제거하여 모달이 아닌 것으로 만드십시오. 쇼케이스 예제 및 설명서를 참조하십시오. – BalusC

+0

'model = "true"'를 제거하면 여러 개의 모달 대화 상자를 열 수 있습니까? 실제로 JSF를 사용하여 채팅 시스템과 같은 페이스 북을 디자인하려고합니다. –

관련 문제