[Seasar-user:2410] Re: [S2JSF] 他の入力値を参照するvalidator

O.K.U. oku
2005年 7月 21日 (木) 21:53:43 JST


O.K.U.です。

----- Original Message ----- 
From: "Yasuo Higa" <[E-MAIL ADDRESS DELETED]>
> S2JSFの場合、Validatorもdiconファイル(allvalidator.dicon)に
> 登録されているので普通のコンポーネントと同じです。

うまく値が設定されていないので、詳しく調べたところ、
setterが呼ばれていないのではなくて、diconで validator の instanceを
設定していない(=singleton)にもかかわらず、少なくともリクエスト毎には
validatorのクラスのインスタンスが別になっていました。
なので、setter で値をセットする変数を static にしてしまえば、その値は
  void validate(FacesContext,UIComponent,Object)
が起動されるときにも参照できるのですが...

さらに調べてみると、dicon で instance をどのように設定しても、
少なくとも request 毎にはインスタンスは別になっていました。
また setter は、デフォルトだと jboss 起動時に1回呼ばれるのですが
それ以外では、いずれも(例えば request を指定したとしても)、
セッション確立時に一度呼ばれるだけでした。

action の時と動作が違うようなのですが..?
ちなみに、html と dicon の記述は以下のようなイメージです。

●htmlの記述
         <input id="password2" type="password" 
m:value="#{registDto.password2}" m:required="true">
     <span m:inject="s:validator" m:binding="#{equalsValidator}" />
        </input>

●diconの記述
        <component name="equalsValidator" 
class="xxx.validator.EqualsValidator">
                <property name="anotherId">"registForm:password"</property>
        </component>






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