2014-11-18 2 views
-1

내가 동적 콘텐츠와 함께 대화 상자 사용에 문제가, 내용의 대화 상자가 표시되지 않습니다대화 primefaces 실제로

XHTML

</p:treeTable> 
     <p:commandButton value="Add" action="#{showEn.displaySelectedNode}" oncomplete="PF('dialogWidget').show()"/> 
    </h:form> 
    <p:dialog appendTo="@(body)" id="dialog" widgetVar="dialogWidget"> 
     <ui:include src="#{showEn.dialog}"/> 
    </p:dialog> 

Java

public void displaySelectedNode(){ 
if(!dialogs[0].equals("-")){ 
     this.dialog="addEn.xhtml"; 
    }else if(!dialogs[1].equals("-")){ 
     this.dialog="addCu.xhtml"; 
    }else if(!dialogs[2].equals("-")){ 
     this.dialog="addTa.xhtml"; 
    } 
} 
public String getDialog() { 
    return dialog; 
} 
public void setDialog(String dialog) { 
    this.dialog = dialog; 
} 
+0

당신은 대화 영역을 업데이트하지 않습니다! 그리고 나는 showEn이 Bean이라고 생각하십니까? 그의 범위는 무엇입니까? –

+0

내가 update = "dialog"를 넣을 때 대화 상자가 나타나지 않고 showEn이 bean이고 sessionscoped 인 여러분 말이 맞습니다. – JCampos

답변

0

대화 상자 태그를 래핑 한 다음 대신 래퍼를 업데이트해야합니다.

자바

private boolean urlChanged; 
public boolean isUrlChanged(){ 
    if (urlChanged){ 
     urlChanged = false; 
     return true; 
    } 
    return false; 
} 
public void displaySelectedNode(){ 
urlChanged = true; 
    if(!dialogs[0].equals("-")){ 
     this.dialog="addEn.xhtml"; 
    }else if(!dialogs[1].equals("-")){ 
     this.dialog="addCu.xhtml"; 
    }else if(!dialogs[2].equals("-")){ 
     this.dialog="addTa.xhtml"; 
    } 
} 

XHTML :

<h:panelGroup id='wrapper' > 
    <p:dialog appendTo="@(body)" id="dialog" widgetVar="dialogWidget" 
dynamic="true" /* given that the src is evaluated during the build phase, 
the use of dynamic content offer a second update 
    */> 
      <ui:include src="#{showEn.dialog}"/> 
    </p:dialog> 
</panelGroup> 
<p:commandButton value="Add" action="#{showEn.displaySelectedNode}"  
     oncomplete="PF('dialogWidget').show()" update="wrapper" /> 

이 솔루션의 문제는 내용이

내가이 솔루션을 시도 제안, 경우 대화 상자가 이미로드되어 변경되지 것입니다

<p:dialog appendTo="@(body)" id="dialog" widgetVar="dialogWidget" 
dynamic="false" /* no need for that */> 
     <h:panelGroup id='wrapper' > 
      <p:remoteCommand name="updateAgain" update="wrapper"/> 
      <c:if test="#{showEn.isUrlChanged}"><script>updateAgain();</script></c:if> 
      <ui:include src="#{showEn.dialog}"/> 
     </panelGroup> 
</p:dialog> 

<p:commandButton value="Add" action="#{showEn.displaySelectedNode}"  
     oncomplete="PF('dialogWidget').show()" update="wrapper" /> 
+0

이 작동하지 않습니다. 버튼을 누르면 대화 상자가 비어있는 것처럼 보입니다. 대화 상자 값을 인쇄하고 올바른 값을 인쇄하지만 src 값에는 나타나지 않습니다. – JCampos

+0

다시 시도하십시오, 지금 작동해야합니다 –

+0

기본적으로, 내가 달성하기 위해 기본적으로, 나는 노드에서 변수 "대화 상자"변경,이 변수는 대화 상자에서 src의 값이 될 것입니다 선정되었습니다. 추가 버튼을 누르면 대화 상자가 나타납니다. – JCampos

0

마지막으로 나는 어떤 일을 성취했습니다. 문제는 primefaces 5와 함께 작동하는 primefaces 버전입니다.이 문제의 올바른 버전은 primefaces version 4입니다. 어쨌든 감사드립니다. ;)

관련 문제