4月 7th, 2008at 12:06

Tags:

Digester1.8のルール応用

このエントリーをはてなブックマークに追加

既存のDigesterのルールを使って、いろんな例の実現性を検討してみる。

繰り返し要素の対応

繰り返し要素を使いたい場合、ちょっと工夫しなければできなかった。

 <user id="user0001">   <name>藤原</name>   <age>20</age>   <telList>     <tel>111-1111-1111</tel>     <tel>222-2222-2222</tel>   </telList> </user>

ルールとしては

  1. userタグがきたらUserVOを作成
  2. name、ageがきたらUserVOに設定
  3. telListがきたら、ArrayListを作成してUserVOに設定
  4. telがきたら、ArrayListにadd

これを実現するには以下のようにルールを記述する

 //例1 <pattern value="items/user/telList">   <object-create-rule classname="java.util.ArrayList" />   <set-next-rule methodname="setTelList" /> </pattern>

 <!-- トップオブジェクトであるArrayListのaddメソッドを呼び出す      引数はtel要素の値 --> <pattern value="items/user/telList/tel">   <call-method-rule methodname="add" paramcount="1" />   <call-param-rule  paramnumber="0" /> </pattern>
 //例2 <pattern value="items/user/telList">   <object-create-rule classname="java.util.ArrayList" />   <set-next-rule methodname="setTelList" />   <pattern value="tel">     <call-method-rule methodname="add" paramcount="1" />     <call-param-rule paramnumber="0" />   </pattern> </pattern>
このエントリーをはてなブックマークに追加