[DOLTENG-75] Generate Master Detail ApplicationのダイアログでDetailテーブルを選択しない状態でOKを押すとNullPointerExceptionが発生する Created: 12/Mar/09  Updated: 31/May/09  Resolved: 31/May/09

Status: Resolved
Project: Dolteng
Component/s: None
Affects Version/s: 0.36.0
Fix Version/s: 0.37.0

Type: Bug Priority: Minor
Reporter: r_ikeda Assignee: takao
Resolution: Fixed Votes: 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テーブルを選択するよう
適切なエラーメッセージ表示



 Comments   
Comment by takao [ 15/Mar/09 ]

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

Comment by r_ikeda [ 18/Mar/09 ]

ボタンを有効にするときに、無条件に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);
             }
         });
         //--------------------------------------------------------------------------
Comment by r_ikeda [ 30/Apr/09 ]

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

Comment by r_ikeda [ 31/May/09 ]

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

Comment by r_ikeda [ 31/May/09 ]

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

--- 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;
     }
 
Comment by koichik [ 31/May/09 ]

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

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

Comment by r_ikeda [ 31/May/09 ]

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

Generated at Sat May 25 23:51:35 JST 2019 using JIRA 7.9.2#79002-sha1:3bb15b68ecd99a30eb364c4c1a393359bcad6278.