2016-10-18 6 views
0

無効な入力があった場合にエラーメッセージを表示するには、MessageManagerというEclipseを使用しています。例:メッセージマネージャはメッセージをフィールドデコレータとしてのみ表示し、ヘッダには表示しません

mmng.addMessage("textLength", "blah", null, IMessageProvider.ERROR, field); 

私はこれを2回行います。いったんModifyListenerのインスタンス内に入り、Textフィールドの作成直後に1回、ロード時の入力を検証します。

MessageManagerディスプレイページのヘッダならびにテキストフィールドの横(デコレータ)におけるエラーModifyListenerの子インスタンスのmodifyEvent方法内側addMessageメソッドを呼び出します。ただし、テキストフィールドの作成直後にメッセージを追加すると、デコレータのみが表示されます(ヘッダーに「n errors detected」というエラーはありません)。

私はこれがなぜ起こるのだろうかと思います。私はこれをEclipseのProductEditorでテストしましたが、実際には同様の動作があります。 .productファイルを開いて最初のページにエラーが表示されると(デコレータのみが表示されます)、エラーはヘッダーに表示されません。ただし、他のページに切り替えた後、この特定のページに戻ると、ヘッダーのエラーが表示されます。残念ながら、これは私の側には当てはまりません。最良のケースは、両方の場所、ヘッダー、およびフィールドの隣にデコレータとしてエラーを自動的に表示する場合でも、同じ動作を実装できれば満足できます。

私はMessageManagerインスタンスのupdate()メソッドを呼び出すことでこの問題を解決しようとしましたが、残念ながらそれは謎を解決しませんでした。ところで

が、私は、Eclipseルナ2

答えて

0

を使用しています私はMessageManagerクラスをデバッグし、updateメソッド内に、次の条件に気づい:NPEがスローされることのほかに

if (form.getHead().getBounds().height == 0 || mergedList.isEmpty() || mergedList == null) { 
      form.setMessage(null, IMessageProvider.NONE); 
      return; 
} 

をするときmergedListこの状態は本当に奇妙に思えます。しかし、頭の高さを設定して私の問題を解決した:

form.getForm().getHead().setBounds(0, 0, 0, 1); 
関連する問題