1

「必要なメッセージ」が開いているときに非表示にならないように Primefaces ダイアログを設定するにはどうすればよいですか? この時点で、ダイアログは「Speichern」ボタンをクリックして閉じます。再度開くと、メッセージが表示されます...入力されていない必須フィールドがある場合、ダイアログを開いたままにしたいと思います。

<h:panelGrid id="createNewPat" columns="3" cellpadding="1" style="margin:0 auto;">  
    <h:outputText for="versNr" value="Versicherten-Nr.:" />  
    <p:inputMask id="versNr" value="#{patientenBean.versNr}" required="true"/>  
    <p:message for="versNr" />
    <p:commandButton id="saveBtn" value="Speichern" 
         action="#{patientenBean.createPatient}" 
         oncomplete="if (!args.messageOccured) createNewPat.hide();" 
         update="patForm" />
    <p:commandButton id="resetBtn" value="Reset" type="reset" /> 
</h:panelGrid>
4

2 に答える 2

3

次のように昨日(3時間のグーグルとテストの後)問題を解決しました:

<p:dialog header="Patient erfassen" widgetVar="createNewPat" 
        resizable="true" id="createPatDlg" >  
        <h:form id="dlgErf">

            <h:panelGrid id="createNewPat" columns="3" cellpadding="1" 
                style="margin:0 auto;">  

                <h:outputText for="versNr" value="Versicherten-Nr.:" />  
                <p:inputMask id="versNr" value="#{patientenBean.versNr}"
                  required="true" >
                    <!--    <f:validateLength minimum="2" /> -->
                </p:inputMask>
                <p:message for="versNr" /> 

ボタンは次のとおりです。

    <p:commandButton id="saveBtn" value="Speichern" 
   action="#{patientenBean.createPatient}" 
   oncomplete="if (!args.validationFailed){createNewPat.hide()}"
       update="createNewPat"/>

<p:commandButton id="resetBtn" value="Reset" process="@this" update="createNewPat" 
        action="#{patientenBean.reset}">
      <p:resetInput target="createNewPat" />
</p:commandButton> 

  </h:panelGrid>  

また、リセット ボタンも機能するようになりました。Bean のメソッドは、すべての属性を NULL に設定するだけです。

public void reset() {
    logger.info("Reset-Methode: Leeren der Felder!");
    versNr=null;
    name=null;
    vorname=null;
    strasseNr=null;
    plz=null;
    ort=null;
    geschlecht=null;
    geburtsdatum=null;

    versNrEdit=null;
    nameEdit=null;
    vornameEdit=null;
    strasseNrEdit=null;
    plzEdit=null;
    ortEdit=null;
    geschlechtEdit=null;
    geburtsdatumEdit=null;

}

助けてくれてありがとう!

于 2013-04-26T07:41:31.383 に答える
1

ダイアログを閉じないようにするには、commandButton(またはダイアログのコンテナーを更新する任意のコンポーネント) をダイアログ内で更新する必要があります。ダイアログのコンテナーを更新しないでください。次に例を示します。

<p:dialog id="dlg">
    <p:panel id="pntest">
        // content here
        <p:commandButton update=":#{p:component('pntest')}"/>
    </p:panel>
</p:dialog>

そうでない場合は、ダイアログをもう一度開く必要がありますoncomplete

oncomplete="(args.messageOccured)? createNewPat.show(): createNewPat.hide(); "
于 2013-04-25T10:41:48.160 に答える