Uploaded image for project: 'Dolteng'
  1. Dolteng
  2. DOLTENG-75

Generate Master Detail ApplicationのダイアログでDetailテーブルを選択しない状態でOKを押すとNullPointerExceptionが発生する

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 0.36.0
    • Fix Version/s: 0.37.0
    • Labels:
      None
    • Environment:
      Eclipse 3.4

      Description

      手順
      1. 新規Doltengプロジェクトで
      Teeda (Page only)
      S2Dao
      Sysdeo Tomcat Plugin
      を選択してプロジェクトを作成

      2. H2データベースを起動

      3. データベースビューから
      EMPテーブルを右クリック→Generate Master Detail Applicationを実行

      4.何も編集せず、OKを押す

      結果
      エラーダイアログが表示

      >問題が発生
      >Reason:
      >NullPointerException

      期待結果
      OKが押せないようにする、またはDetailテーブルを選択するよう
      適切なエラーメッセージ表示

        Activity

        Hide
        takao takao added a comment -

        御指摘ありがとうございます。
        修正しました。

        Show
        takao takao added a comment - 御指摘ありがとうございます。 修正しました。
        Hide
        r_ikeda r_ikeda added a comment -

        ボタンを有効にするときに、無条件にtrueにするのではなく
        以前に使っていた条件判定を使った方がいいと思います。
        ...

        Index: src/main/java/org/seasar/dolteng/eclipse/wigets/OutputLocationHeadMeisaiDialog.java
        ===================================================================
        --- .	(revision 252)
        +++ .	(working copy)
        @@ -225,7 +225,7 @@
                         String[] tmp = meisaiTableList.getSelection();
                         meisaiTableName = tmp[0];
                         Button ok = getButton(IDialogConstants.OK_ID);
        -                ok.setEnabled(true);
        +                ok.setEnabled(0 < displaies.length);
                     }
                 });
                 //--------------------------------------------------------------------------
        
        Show
        r_ikeda r_ikeda added a comment - ボタンを有効にするときに、無条件にtrueにするのではなく 以前に使っていた条件判定を使った方がいいと思います。 ... Index: src/main/java/org/seasar/dolteng/eclipse/wigets/OutputLocationHeadMeisaiDialog.java =================================================================== --- . (revision 252) +++ . (working copy) @@ -225,7 +225,7 @@ String[] tmp = meisaiTableList.getSelection(); meisaiTableName = tmp[0]; Button ok = getButton(IDialogConstants.OK_ID); - ok.setEnabled(true); + ok.setEnabled(0 < displaies.length); } }); //--------------------------------------------------------------------------
        Hide
        r_ikeda r_ikeda added a comment -

        現状だと未対応のタイプでボタンが活性化してしまうので上記変更をコミットしました。

        Show
        r_ikeda r_ikeda added a comment - 現状だと未対応のタイプでボタンが活性化してしまうので上記変更をコミットしました。
        Hide
        r_ikeda r_ikeda added a comment -

        リリース前のテストにて再度確認したところ、Detailテーブルを選択しない状態でOKを押すとNullPointerExceptionが発生する現象が再現しました。

        Show
        r_ikeda r_ikeda added a comment - リリース前のテストにて再度確認したところ、Detailテーブルを選択しない状態でOKを押すとNullPointerExceptionが発生する現象が再現しました。
        Hide
        r_ikeda r_ikeda added a comment -

        初期表示時はボタンを非活性で表示するように変更する必要があると思います。
        ...

        --- OutputLocationHeadMeisaiDialog.java	2009-05-31 04:41:24.123000000 +0900
        +++ OutputLocationHeadMeisaiDialog_new.java	2009-05-31 04:39:16.394330500 +0900
        @@ -284,8 +284,9 @@
             protected Control createButtonBar(Composite parent) {
                 Control c = super.createButtonBar(parent);
                 Button ok = getButton(IDialogConstants.OK_ID);
        -        ok.setEnabled(0 < this.displaies.length);
        -        //ok.setEnabled(false);
        +        // 初期表示時は明細テーブルが選択されていないため
        +        // ボタンを非活性で表示
        +        ok.setEnabled(false);
                 return c;
             }
         
        
        Show
        r_ikeda r_ikeda added a comment - 初期表示時はボタンを非活性で表示するように変更する必要があると思います。 ... --- OutputLocationHeadMeisaiDialog.java 2009-05-31 04:41:24.123000000 +0900 +++ OutputLocationHeadMeisaiDialog_new.java 2009-05-31 04:39:16.394330500 +0900 @@ -284,8 +284,9 @@ protected Control createButtonBar(Composite parent) { Control c = super.createButtonBar(parent); Button ok = getButton(IDialogConstants.OK_ID); - ok.setEnabled(0 < this.displaies.length); - //ok.setEnabled(false); + // 初期表示時は明細テーブルが選択されていないため + // ボタンを非活性で表示 + ok.setEnabled(false); return c; }
        Hide
        koichik koichik added a comment -

        対応しました.アップデートサイトも更新済みです.
        http://svn.seasar.org/browse/?view=rev&root=sandbox.dolteng&revision=276

        ヘッダ側の検索条件を指定しなかった場合,生成されたソースがコンパイルエラーになるので,ヘッダと明細の両方が選択された場合のみ OK ボタンが有効になるようにしました.
        通常の scaffold と違ってマスタ・ディテールでは検索条件必須でいいんだよね?

        Show
        koichik koichik added a comment - 対応しました.アップデートサイトも更新済みです. http://svn.seasar.org/browse/?view=rev&root=sandbox.dolteng&revision=276 ヘッダ側の検索条件を指定しなかった場合,生成されたソースがコンパイルエラーになるので,ヘッダと明細の両方が選択された場合のみ OK ボタンが有効になるようにしました. 通常の scaffold と違ってマスタ・ディテールでは検索条件必須でいいんだよね?
        Hide
        r_ikeda r_ikeda added a comment -

        修正を確認しました。
        ご対応ありがとうございました。

        Show
        r_ikeda r_ikeda added a comment - 修正を確認しました。 ご対応ありがとうございました。

          People

          • Assignee:
            takao takao
            Reporter:
            r_ikeda r_ikeda
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development