2016-09-06 9 views
3

私はsaveSendボタンの5つのフィールドを含むオルベーンフォームを持っています。Orbeonフォームの条件付きバリデーション

saveでは、2つのフィールドのみが必須であり、sendではすべて5つのフィールドが必須です。

このシナリオの検証を書き込む方法。

更新:

私はコントロール名で隠しフィールドを追加しました:まだ条件検証が動作していない

<property as="xs:string" name="oxf.fr.detail.process.save.*.*"> 
    xf:setvalue(
     ref = "bind(ValidationMode-bind)", 
     value = "'save'" 
    ) 
    then xf:dispatch(
     name  = "xforms-recalculate", 
     targetid = "fr-form-model" 
    ) 
    then validate-all 
    then save-final 
</property> 

ValidationModeと私のプロセスは次のようになります。助けてください

答えて

0

save-draftボタンを使用して、検証なしで保存を許可することができます。このdocumentationを参照してください。しかし、save-draftは、保存する前に検証の確認を完全にスキップします。

更新

あなたが押したボタンに応じて、(「必須」または制約式で)を検証したい場合は、私は、次の方法を考えることができます。

フィールドが必須かどうかは、XPath式で表現できます。何とかXPath式が押された現在のボタンに依存していなければならず、その時点で検証を再適用する必要があります。ですから、次の操作を行うことができます:

  • は、非表示のフォームフィールドを追加し、値が言う、ユーザーが1つのボタンまたは他が押されたかどうかを確認含まれていますvalidation-modeを、言うsaveまたはsendまたはブランク。
  • 妥当性検査をそのフィールドに応じて行います($validation-modeを使用)。
  • 「保存」または「送信」ボタンのそれぞれに関連した新しいprocess書く:
    • は隠しフィールドの値を設定し、saveまたはsendに言います。
    • 再計算/再検証を強制します。このための組み込みのアクションはまだありませんが、xf:dispatch(name = "xforms-recalculate", targetid = "fr-form-model")で実行できます。
    • その後、通常の処理を続けます。

ので、プロセスは次のようになります。保存-draft`を `

<property as="xs:string" name="oxf.fr.detail.process.save.*.*"> 
    xf:setvalue(
     ref = "bind('validation-mode-bind')", 
     value = "'save'" 
    ) 
    then xf:dispatch(
     name  = "xforms-recalculate", 
     targetid = "fr-form-model" 
    ) 
    then validate-all 
    then expand-all 
    then save-final 
</property> 

<property as="xs:string" name="oxf.fr.detail.process.send.*.*"> 
    xf:setvalue(
     ref = "bind('validation-mode-bind')", 
     value = "'send'" 
    ) 
    then xf:dispatch(
     name  = "xforms-recalculate", 
     targetid = "fr-form-model" 
    ) 
    then validate-all 
    then expand-all 
    then send(
     uri  = "http://posttestserver.com/post.php", 
     method = "post", 
     content = "xml", 
     replace = "all" 
    ) 
</property> 
+0

(NO検証がここに起きません)、それが有効でない場合でも、フォームデータを保存します。しかし、私の場合、5つのフィールドのうち、 'save-draft'のクリックで2つのフィールドを検証することが義務付けられています。 – Saha

+0

私は部分バリデーションを探しています。 – Saha

+0

私は参照してください。私は自分の答えを更新しました。 – ebruchez

関連する問題