2016-03-31 11 views
0

私はxformページを開き、フォームフィールドには直接アクセスせずにフォームを直接送信しています。 フォームに検証エラーがある場合、データは送信されませんが、検証エラーはデフォルトのError Summary Componentには表示されません。 イベント "xforms-submit-error"が発生したときにモーダルダイアログを表示します。Orbeonフォームで送信が失敗した場合の検証エラーを表示

妥当性検査のエラーは、エラーサマリーコンポーネントによって制御されます。 そのドキュメントからは、「エラーサマリコンポーネント...訪問されたコントロールを追跡し、すべてのエラー... " これは起こっている! :-)

したがって、ユーザーがフォームフィールドを「訪問」せずにフォームを送信しようとすると、妥当性検査エラーがある場合は、検証エラーをリストします。

さまざまな関連サイト/コードサンプル/フォーラムで、これを行うにはすべてのコントロールに「訪問しました」と表示される「訪問中」アクションを使用する必要があるため、関連するエラーが表示されます!

だから、このような何かを試してみましたが、ない幸運!:

... 

    <xf:submission id="submit" ... 
     ... 
     <xf:action ev:event="xforms-submit-error"> 
      <xf:message level="modal">Oooops!</xf:message> 
      <!-- virtual visit all form fields? --> 
      <xf:dispatch name="fr-visit-all" targetid="error-summary"/> 
      <xf:refresh/> 
      <xf:dispatch name="fr-update" targetid="error-summary"/> 
     </xf:action> 
     ... 
    </xf:submission > 

    ... 
    </xf:model> 
</xh:head> 
<xh:body> 
    <fr:view> 
    ... 

    <xf:trigger id="submit-control" bind="submit-bind"> 
     <xf:label ref="$form-resources/submit/label" /> 
     <xf:send ev:event="DOMActivate" submission="submit" /> 
    </xf:trigger> 

    ... 

デフォルトの「エラー・サマリ」にアクセスする方法は?私はカスタムエラーの概要を追加していない、私は組み込みのコンポーネントを使用したい。 Orbeonを使用して

は解決4.5

+1

私がチェックし、フォームのランナーは、派遣 'FR-訪問-ALL'を行います。これにより、Error Summaryは ''アクションを使用して、すべてのコントロールを訪問したとマークします。だから私はなぜあなたのケースではうまくいかないのか分かりません。 *提出前に 'fr-visit-all' *を試すことができますか? – ebruchez

+0

targetidは "error-summary"、 "fr-error-summary-model"、その他の何かが必要ですか? – oikonomopo

答えて

0

フォーム!

問題は、xf:dispatchイベントハンドラのtargetidプロパティです。

"error-summary"の代わりに、 "error-summary-model"をtargetidプロパティ値として使用して、ビルトインの "Error Summary Component"にアクセスする必要があります。

components.xslerror-summary.xblを検査)

サンプルワーキングコード:

... 
    <xf:submission id="submit" ... 
     ... 
     <xf:action ev:event="xforms-submit-error"> 
      <!-- Listing the errors present on form --> 
      <!-- 
       1. visit-all action, which will result in marking all controls "visited", so their related error shows. 
       2. to properly update the error summary within a submission response, we need an explicit <xf:refresh> action before dispatching.... 
       3. ...fr-update, so that the UI captures all the valid/invalid states: 
      --> 
      <xf:dispatch name="fr-visit-all" targetid="fr-error-summary-model"/> 
      <xf:refresh/> 
      <xf:dispatch name="fr-update" targetid="fr-error-summary-model"/> 
     </xf:action> 
     <xf:action ev:event="xforms-submit-done"> 
      <xxf:script>window.parent.closeIframe();</xxf:script> 
     </xf:action> 
    </xf:submission> 
    ... 
    </xf:model> 
</xh:head> 
<xh:body> 
    <fr:view> 
    ... 
    <xf:trigger id="submit-control" bind="submit-bind"> 
     <xf:label ref="$form-resources/submit/label" /> 
     <xf:send ev:event="DOMActivate" submission="submit" /> 
    </xf:trigger> 
    ... 
関連する問題