[Seasar-user:12472] Re: Teeda Ajax ajaxXxxxxメソッドでコンポーネントが登録されていない?

kiyoshi hosoda [E-MAIL ADDRESS DELETED]
2008年 1月 11日 (金) 15:12:58 JST


細田です。

原因について報告いたします。

原因は、コンポーネントがnullだったためではありませんでした。
メソッドの引数がアンボクシングされた際にnullだったために発生していました。
私のTeeda Ajaxの理解不足と確認ミスが原因といえます。

状況としては、NullPointerExceptionが発生している行:

>  terminologicDictionaryDao.getDetail(id);

このメソッドはプリミティブ型のintを引数に持っていたのですが、idはIntegerでした。
引数がプリミティブ型であることを忘れていたため、idがnullの場合はgetDetailメソッド
の内部でNullPointerExceptionが発生し、スタックトレースに出力されるはずと
思い込んでいたこと、idに@Requiredアノテーションをつけていたため、必須チェック
が行われるはずと思い込んでいたことなどが原因です。

お騒がせいたしました。ご協力感謝いたします。

ちなみにPageクラス内のajaxメソッド実行時にセットされるパラメータのValidatorが
効かないのは仕様でしょうか?(使い方が間違っている可能性もありますが)

@Required(target="ajaxGetDetail")
public Integer id;

と指定していましたが、エラーになりませんでした。Ajaxだとエラーメッセージの
表示とかが難しいのかもしれませんね。
JSONで{"allMessages":"hoge error"}とか戻してJSONレンダリングするしか
ないのでしょうか?


Seasar-user メーリングリストの案内