式評価の件、凡ミスでした。

昨日書いた、「S2JSFのm:renderedによる式評価について」
http://d.hatena.ne.jp/wataka/20060711#1152628933

については私の単なる凡ミスでした。

S2JSFのm:renderedでは、String型のnull評価および空文字評価が可能です

というわけで誰のお役に立つこともなさそうですがメモします(言い訳です)
結論から書くと、当たり前のことですが、

  • SQL文のSELECT句に含まれないフィールドは初期化されたままの状態でDtoの変数に入っています。String型であれば原則空文字です
  • 抽出したフィールドの値がnullの場合、DtoのString型変数には、nullがセットされます。

これがあやふやでした..orz

private String name = ""; //初期化

○背景

  • 1件表示と複数件表示を同じS2JSFページで実装。
  • テーブルからの1件抽出(MethodA)と複数件抽出(MethodB)は別メソッド
  • SQLアノテーション使用
  • create table hoge (id number, name varchar);

○発行してたSQL

  • MethodA (select id, name from hoge)
  • MethodB (select id from hoge) //nameが抜けていた

項目追加があった場合ややこしくなりそうなので、select * に統一しておいた方がいいかも...

Stringのnull評価・空文字評価をまとめて確認したいときは、getterでトレースしたり、下記を引用すると吉です。

<span m:rendered="#{e.name==null}">null です</span>
<span m:rendered="#{e.name!=null}">not null です</span>
<span m:rendered="#{e.name==''}">空文字 です</span>
<span m:rendered="#{e.name!=''}">not 空文字 です</span>

大変×2お騒がせしました。 >> id:yone098 さま