1

説明であるアコーディオンパネルのタブ内にテキスト領域があります。説明を編集して保存しようとしています。最大文字数が1000文字を超えないようにテキスト領域を検証しています。<p:message>検証メッセージを表示するために使用しています。実際に保存する前に、保存を確認するための確認ダイアログが表示されます。

<p:messages showDetail="true" autoUpdate="true" />

<p:accordionPanel dynamic="true">
    <p:tab id="_0" title="description">
        <p:inputTextarea styleClass="max" id="editDesc1" widgetVar="txtBox" value="#{testBean.description}" 
            rows="6" cols="150" validatorMessage="#{msg.AddSystem_validationMsg5}" autoResize="false">
            <f:validateLength maximum="1000"></f:validateLength> 
        </p:inputTextarea>

        <p:commandButton value="save"  oncomplete="saveDialog.show()"/>

        <p:confirmDialog message="#{msg.EditSystem_confirmMsg1}" width="200" 
            showEffect="explode" hideEffect="explode" 
            header="Confirm" severity="alert" widgetVar="saveDialog"> 
            <p:commandButton value="#{msg.EditSystem_confirmAnswer1}"  action="#{testBean.saveEdit}" process="@this" /> 
            <p:commandButton value="#{msg.EditSystem_confirmAnswer2}" onclick="saveDialog.hide()" type="button" /> 

ユーザーが1000文字を超えて入力して保存しようとすると、検証メッセージが短時間表示された後、確認ダイアログがポップアップし、検証メッセージが消えます。検証エラーが発生したときに確認ダイアログがポップアップしないようにするにはどうすればよいですか?

4

2 に答える 2

5

oncomplete検証が失敗していない場合は、保存ボタンをチェックインする必要があります。PrimeFacesは、グローバルargsオブジェクトをJavaScriptスコープに配置し、JavaScriptスコープはブールvalidationFailedプロパティを持ちます。あなたはそれを利用することができます:

<p:commandButton value="save" oncomplete="if (args &amp;&amp; !args.validationFailed) saveDialog.show()"/>

このように、確認ダイアログは、検証が失敗していない場合にのみ表示されます。

于 2013-03-27T12:04:55.687 に答える
-1

javascriptを使用して検証できると思います。

<script type="text/javascript">
function test(){
// validation here
if(isValidated){saveDialog.show()}
else alert('exceed ...');
}
</script>
<p:commandButton value="save"  onclick="test()"/>
于 2013-03-27T04:01:15.177 に答える