0

コマンドボタンのあるアコーディオン内にダイアログがあります。コマンド ボタンをクリックすると、ダイアログが開き、内部に入力テキスト コンポーネントがあります。名前を空にしないでくださいという検証を行いました。

私が直面している問題は、コマンド ボタンをクリックしていなくても、入力テキストの検証メッセージが表示され、空であってはならないということです。これは毎回表示され、アプリケーションがハングします。dynamic="false" を設定しようとしましたが、これも機能しませんでした。

私はプライムフェイス3.5とjsf2を使用しています

<p:accordionPanel dynamic="true" id="editSeAccordion" >
    <p:tab id="Edit3" title="myEdit">
        <p:dialog widgetVar="addSAPDialog" id="sapDialog" modal="true" minimizable="false"
            style="position:fixed;" closable="true" position="350,250" maximizable="false" >

            <p:panel style="border:none;background:#F0F0F0;margin-top:-10px;">
                <h:panelGrid columns="2">
                    <h:outputText value="msg.EditService_s}" styleClass="label" />  
                    <p:inputText label="name" styleClass="textfield" 
                        value="#{serviceManagedBean.sapBean.name}" required="true" 
                        requiredMessage="name is compulsary"/>

                </h:panelGrid> 
                <p:commandButton value="Cancel" styleClass="btn-secondary" 
                    style="float:right;margin-top:20px;" onclick="addSAPDialog.hide();"/>
                <p:commandButton value="Ok" styleClass="btn-primary" ajax="true"  
                    actionListener="#{serviceManagedBean.createAddSapPanel}"  
                    oncomplete="handleDialogSubmit(xhr, status, args)"/>

            </p:panel>
        </p:dialog>
4

1 に答える 1

0

ダイアログ内の入力には別の h:form 要素を使用してみてください。アコーディオン タブをクリックすると、部分プロセスまたは部分レンダリングが使用されているかどうかに関係なく、必要な入力が検証されるためです。

于 2013-05-29T12:48:59.773 に答える