2014-07-10 2 views
2

JSF 및 PrimeFaces에서 작업 중이므로 다음 상황을 처리 할 수 ​​없습니다. 대화 상자가 있으며 dataTable을 배치했습니다. 테이블의 셀 중 하나에서 3 가지 방법으로 주어진 데이터를 표시하고 싶습니다. 그리고이 두 테이블을 전환하고 싶습니다. 지금까지 commandLink를 통해 이러한 렌더링 유형을 전환 할 수 있었지만 문제는 3 개의 링크 중 하나를 클릭하면 대화 상자가 닫힙니다. 대화 상자의 내용을 업데이트하고 동시에 열어 둘 수 있습니까?Primefaces : 대화 상자 내용을 업데이트하고 열어 두십시오.

내 CommandLink는이 다음과 같습니다 (I는 MyMethod라는를 통해 사용할 수있는 유형을 렌더링 업데이트 해요) : 내가 아약스 = 거짓 속성을 사용하지 않는 경우, 메소드가 호출되지

<p:commandLink id="id" update=":myForm:myDialog" ajax="false" 
       action="#{myBean.myMethod}" oncomplete="dialog.show()"> 

을, 그리고 또한 imediate = true를 시도했지만 이는 그 중 하나가 아닙니다.

답변

3

당신은 outputpanel 아닌 대화 자체가 당신의 대화 내부 p:outputPanel을 정의하고 업데이트해야합니다 (그건 왜 당신의 대화 상자가 닫히고) :

<p:dialog id="myDialog" ...> 
    <p:outputPanel id="myOutputPanel"> 
    ... your dialog content goes here 
    </p> 
</p:dialog> 

및 변경에 관한 당신의 CommandLink는

<p:commandLink id="id" update=":myForm:myDialog:myOutputPanel" ajax="true" 
      action="#{myBean.myMethod}" oncomplete="dialog.show()"> 

oncomplete="dialog.show()" - 필요한 경우 확실하지 않습니다. 테이블과 코드에 관한 더 많은 코드를 제공하면 정확한 대답을 얻을 수 있습니다.

+0

출력 패널을 포함하지 않을 것으로 생각하고 업데이트하면 어떤 차이가 발생합니다. 나도 같은 문제가 있었고 oncomplete = "dialog.show()"를 추가하지 않고이 이론을 테스트했고 대화 상자는 여전히 닫힙니다. oncomplete = "dialog.show()"는 다시 표시하게 만들지 만, 대화 상자가 사라지고 다시 나타날 때 깜박 거리기 때문에 이상적인 해결책은 아닙니다. – jrobertsz66

+0

차이가 있다고 생각하지 않습니까? 그것을 시도해보십시오. 한 경우 전체 대화 상자가 업데이트 (업데이트 : DOM에서 제거하고 DOM에 다시 추가)되거나 대화 상자의 출력 패널이 업데이트되고 대화 상자가 그대로 유지되기 때문에 – Manuel

+0

그 차이점은 Q가'ajax = "false"'(onComplete가 도트 연산을하는 곳에서 ...)이고 암시 적'ajax = "true"'를 사용하기 때문에 양쪽 모두 맞다는 것입니다. (ajax 부분 변경되지 않았습니다) – Kukeltje

0

나는 동일한 문제가있어서 해결책 대신 양식을 업데이트해야합니다.

<p:dialog id="id_dialog" ...> 
    <h:form id="id_form"> 
     ... content 
    </h> 
</p:dialog> 

및 CommandLink는 : 예를 들어

<p:commandLink update=":id_form" process="@all" ...> 

이 나를 위해 일했다!

+0

귀하의 대답은 이미 주어진 것과 동일합니다. 유일한 차이점은 그 안에 패널 대신 양식을 넣는 것입니다. 오프 주제 :'process = "@ all"'은 권고하지 않습니다. 여러 형태가 존재할 때 이상한 결과를 초래할 수 있습니다. – Kukeltje

+0

조언 해 주셔서 감사합니다.하지만 동의하지 않습니다. 내 답변은 주어진 것과 비슷하지만 큰 차이점이 있습니다.이 솔루션이 효과가 있습니다. 나는 또한 주어진 해결책을 시도했지만 성공하지는 못했다. OK,'process = "@ all"'은 필요하지 않습니다. – akelec

관련 문제