[Seasar-user:9259] Re: [Teeda]BigDecimalConverterのtargetが効かない場合の調査方法は?

Taro Unno [E-MAIL ADDRESS DELETED]
2007年 7月 19日 (木) 18:01:35 JST


大谷さん

いつもお世話になっております。

> 何がどう効かないのでしょうか?
すみません、説明不足でしたね。状況はですね、、、

aaa.htmlに、入力項目と、doのボタンが2つあります。

  <input type="text" id="zzz" value=""/>
  <input type="button" id="doAaa" value="aaa" onclick="return functionAAA();"/>
  <input type="button" id="doBbb" value="bbb"/>	

aaaPageクラスに、zzzプロパティと、ボタン用のメソッドが2つあります。

  @BigDecimalConverter(pattern = "###,###,###,##0",target = "doAaa")
  @Required(target = "doAaa")
  @ByteLength(maximum = 15,target = "doAaa")
  private BigDecimal zzz;

  public BigDecimal getZzz() {
      return zzz;
  }

  public void setZzz(BigDecimal zzz) {
      this.zzz = zzz;
  }

  public String doAaa(){
      return "次の画面";
  }

  public String doBbb(){
      return "次の画面";
  }


zzzは数値項目であり、たとえば「0a」と入力してdoBbbのボタンをクリックすると、
target = "doAaa"と指定しているのにバリデーションエラーになってしまいます。

デバッガで追ったところ、
javax.faces.convert.BigDecimalConverterのgetAsObjectメソッドが
呼ばれ、例外が発生していました。

org.seasar.teeda.extension.convert.TBigDecimalConverterのgetAsStringメソッド
の場合は、catch節の中でtargetを見て

            if (!isTargetCommandConvert(context, targets)) {
                return null;
            }

と無視しているので、これを真似てgetAsObjectを同様にオーバーライドして
単純にcatch節の処理をパクれば解決!
ではないですよね。。。
こうすることでどこに影響がでるのか追いきれていません。

targetを効かせるにはどのようにカスタマイズすべきか
可能であればアドバイスをお願い致します。

海野


07/07/19 に Shinpei Ohtani<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 大谷です.
>
> > 改めてお聞きしたいのは、
> > ・BigDecimalConverterにtarget属性はあるのかどうか
>
> @BigDecimalConverterの指定先は
> Teeda用に拡張したTBigDecimalConverterです.
>
> またtarget属性は現在のところ、getAsString()の場合しか
> 有効ではありません.
>
> > ・あるなら、BigDecimalConverter側かこちらの設定か
> > 問題の切り分けはどうすればよいか
>
> どの画面においても効かないといっているのは、
> 何がどう効かないのでしょうか?
> 想定と実際という感じで具体的に教えてもらえますか?
>
> 宜しくお願いします.
>
> 07/07/19 に Taro Unno<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > 海野です。
> > 先ほどのメールを訂正させてください。
> >
> > BigDecimalConverterのtarget属性の指定が
> > どの画面においても効きません。
> >
> > ある画面で効いたのは、そう思い込んでいたので間違いでした。
> > 失礼致しました。
> >
> > 改めてお聞きしたいのは、
> > ・BigDecimalConverterにtarget属性はあるのかどうか
> > ・あるなら、BigDecimalConverter側かこちらの設定か
> > 問題の切り分けはどうすればよいか
> > です。
> >
> > 以上、宜しくお願い致します。
> >
> >
> >
> > 07/07/19 に Taro Unno<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > > 海野です。
> > > いつもお世話になっております。
> > >
> > > Teeda1.0.8で開発しております。
> > >
> > > BigDecimalConverterのtarget属性を指定して
> > > 複数のボタンのうち、片方にだけ効かせたいのですが、
> > > ある画面では効き、ある画面では効かない(常にバリデーションがかかってしまう)
> > > という現象が発生しています。
> > >
> > > おそらくBigDecimalConverterのせいではないと思い
> > > htmlやPageクラスを2つの画面で比較しているのですが
> > > 原因が見つけられず困っております。
> > >
> > > target属性がきちんと効いているかをどのように調査すればよいか、
> > > ヒントをくださいませんでしょうか。
> > >
> > > 以上、どなたか見当のつく方、宜しくお願い致します。
> > >
> > _______________________________________________
> > Seasar-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> >
>
>
> --
> =============================
> Shinpei Ohtani
> [E-MAIL ADDRESS DELETED]
> =============================
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



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