[Seasar-user:13359] Re: ConversionRule の ognl.Token エラー

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 3月 20日 (木) 22:00:08 JST


小林 (koichik) です.

Date:    Thu, 20 Mar 2008 21:02:58 +0900 (JST)
From:    小関 佑 <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:13358] ConversionRule の ognl.Token エラー

> ArrayList<NewAmount>形式のdataItemsを
> ArrayList<AmountDto>形式のviewListに変換したいですが、

NewAmount と AmountDto が同じ名前のプロパティを
持っているなら,@ConversionRule は不要です.

List<AmountDto> convert(List<NewAmount> dataItems);

これだけで,NewAmount の List が AmountDto の List に
変換されます.


@ConversionRule を使う必要があるのは,NewAmount の
プロパティと AmountDto のプロパティ名が異なる場合や,
特殊な変換をする必要がある場合だけです.
例えば NewAmount の foo および bar プロパティを
それぞれ AmountDto の aaa および bbb プロパティに
設定したいなら,

@ConversionRule("'aaa' : foo, 'bbb' : bar")
ArrayList<AmountDto> ListConvert(ArrayList<NewAmount> dataItems);

となります.
さらに,NewAmount の bar プロパティが null の場合は
空文字列を AmountDto の bbb プロパティに設定するなら

@ConversionRule("'aaa' : foo, 'bbb' : bar == null ? '' : bar")
ArrayList<AmountDto> ListConvert(ArrayList<NewAmount> dataItems);

となります.

<超重要>
@ConversionRule の中で使う識別子は,Dxo のメソッドの
引数名ではなく,NewAmount や AmountDto のプロパティ名で
あることに注意してください.
</超重要>


なお,OGNL 式で「@クラス名@メソッド名」で呼び出せるのは
static メソッドだけです.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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