2014-09-04 4 views
0

를 업데이트모든 대화 상자가 나는 XHTML 페이지에이 대화 상자가 후원 콩

<p:dialog width="400" id="dialog1" header="Download" widgetVar="dialog1"> 
    <h:outputText value="Field1"/> 
    <h:inputText value="#{backingBean.field1}"/> 
    <br/> 
    <h:outputText value="Field2"/> 
    <h:inputText value="#{backingBean.field2}"/> 
    <br/> 
    <p:commandButton value="Download" ajax="false" onsuccess="PF('diaglog1').hide();"> 
     <p:fileDownload value="#{backingBean.file}"/> 
    </p:commandButton> 
</p:dialog> 
<p:dialog width="400" id="dialog2" header="Send" widgetVar="dialog2"> 
    <h:outputText value="Field1"/> 
    <p:inputText value="#{backingBean.field1}"/> 
    <br/> 
    <h:outputText value="Field2"/> 
    <h:inputText value="#{backingBean.field2}"> 
     <p:ajax update="somePanel"/> 
    </h:inputText> 
    <br/> 
    <h:outputText value="Recipient"/> 
    <h:panelGroup id="somePanel"> 
     <p:selectOneMenu style="width: 100%;" var="recipient"> 
      <f:selectItems value="#{backingBean.someList}"/> 
     </p:selectOneMenu> 
    </h:panelGroup> 
    <br/> 
    <p:commandButton value="Send" actionListener="#{backingBean.sendSomething}"  onsuccess="PF('dialog2').hide();"> 
     <f:attribute name="item" value="#{recipient}"/> 
    </p:commandButton> 
</p:dialog> 

그들은 서로 다른 기능을 가지고 있지만 같은 페이지에 같은 백업 콩을 사용합니다. 한 번에 하나의 대화 상자 만 나타날 수 있습니다. 문제는 첫 번째 대화 상자에 값을 입력하고 '다운로드'를 누르면 백킹 빈의 field1과 field2를 원하는 값으로 업데이트하지만 두 번째 대화 상자에서도 해당 값으로 업데이트됩니다. 첫번째 파일이 잘못된 파일을 다운로드하게합니다. 두 번째 대화 상자를 제거하면 첫 번째 대화 상자가 올바르게 작동합니다.

어떻게 두 번째 대화 상자에서 값을 업데이트하지 못하게합니까?

+0

JSF로 들어가기 전에 기본 HTML을 배우는 것이 좋습니다. 감사합니다. – BalusC

+0

. 그럴거야. –

답변

2

두 대화 상자를 모두 하나의 h:form 구성 요소로 유지하는 것 같습니다.
그런 다음 분명히 한 대화 상자에 제출하면 두 대화 상자의 입력란이 모두 같은 양식으로 제출됩니다.

  • 대신 대화 상자 안에 h:form을 사용합니다 h:form 내부 p:dialog를 보관하지 마십시오.
  • 페이지에서 h:form을 여러 개 사용하면 에 아무런 해가 없지만 다른 하나는 h:form을 사용해서는 안됩니다.
  • 디자인 및 기능에 따라 사용할 수있는 양식 수를 결정하십시오. 두 개의 대화 상자 안에 각각 h:forms을 사용할 수 있습니다.