2016-03-23 11 views
0

私はopenui5から始めています。私はフォームのすべてのフィールドを検証したい。OpenUI5フォーム検証時submit

私は、コントローラ上の

sap.ui.getCore().getMessageManager().registerObject 

this.getView().attachValidationError 

を使用して、私は、フォーム内の入力の値を変更すると完璧に実行しています。

フォームボタンでプレスイベントをトリガーすると、すべてのフォーム入力を検証するのはどうですか?

唯一solutionが見つかりましたが、これは各フィールドを個別に検証する必要があります。

MessageManagerを呼び出してすべてのフィールドの検証とレンダリングを行う方法はありませんか?

答えて

-1

私はしばらく前に書いたこのブログを参照してください:http://scn.sap.com/community/developer-center/front-end/blog/2015/11/01/generic-sapui5-form-validator

を提出ボタン

をクリックしたときに、それは少しもこじつけである例えば、任意の時点で自分のフォームを検証するための手段を提供しますユーティリティクラス(it's on GitHub)を供給するのではなく、その背後にある考え方は以下の通りです:あなたが唯一のvalidatにしたいので

  • ことはあなたのフォームのルートコンテナを特定し、(再帰的に)(sap.ui.core.Controlから継承するすべての子どもたちを見つけます当然の電子制御)
  • チェック供給する制御が続いて表示され、実際に目に見えるとすることができるもの(表示されないことができ、何もチェックでは意味)
  • はい場合は制約が
  • を設定されているかどうかを確認された場合、インライン検証のようにコントロールを検証してみてください。
  • しかし、コントロールを検証できなかった場合、検証できる集計がある可能性があります。子コントロールを保持することができるフォーム、テーブルなど)である可能性があります。私たちは、その後、子供たちをチェックして、再帰的に主要部分は、実際にすべての子コントロールの検証を呼び出している

再びvalidateメソッドを呼び出します。

try { 
    // get the control's binding (oControl is the control you want to validate) 
    var oControlBinding = oControl.getBinding("value"); // or selectedKey, text, etc 
    // get the formatted value 
    var oExternalValue = oControl.getProperty("value"); 
    // get the actual, internal value 
    var oInternalValue = oControlBinding.getType().parseValue(oExternalValue, oControlBinding.sInternalType); 
    // trigger the actual validation 
    oControlBinding.getType().validateValue(oInternalValue); 
} 
+0

はopenui5は、このためのソリューションを持っていないことを私のために驚くべきことです。ご回答有難うございます。 – user2864893