[Seasar-user:15851] Re: [teeda]isAaaの使い方

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 9月 26日 (金) 19:01:06 JST


小林 (koichik) です.

Date:    Fri, 26 Sep 2008 14:58:37 +0900
From:    "Tetsutaroh Satoh" <[E-MAIL ADDRESS DELETED]>
To:      <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:15849] Re: [teeda]isAaaの使い方

> prerender()メソッドにaaaItemsの中身を書いて、
> 実行し、ラジオボタンを表示させ、ラジオボタンを
> クリックしてからサブミットすると、
> doSubmit()メソッドが呼び出されないという
> 現象がおこります。

コンソールに出力されるログを確認していますか?
盛大に例外が出ているはずです.
問題が起きた時には,まずは何が起きているのか
情報を集めてください.

以下を読む前に,コンソールを確認してみてください.



Teeda は HTML の id をページクラスの
「プロパティ」と結びつけます.

プロパティというのは元々は JavaBeans での
約束事で,型が T で名前が xxx というプロパティは

  T getXxx()
  void setXxx(T newValue)

という getter おおび setter と呼ばれる
メソッドで実現されます.
型が boolean の場合に限り,getter メソッドを

  boolean isXxx()

とすることもできます.

Teeda (Seasar2) では,この JavaBeans 流の
getter/setter メソッドに加えて,public な
フィールドも「プロパティ」として扱われます.
つまり,型が T で名前が xxx というプロパティを

  public T xxx

というフィールドで実現することができます.

一つの「プロパティ」を実現する方法が複数
(getter/setter メソッドと,public フィールド)
あることに注意してください.

getter/setter メソッドによるプロパティの
名前と public フィールドによるプロパティの
名前が同じ場合,それらは別のプロパティではなく,
同じ名前のプロパティを表します.

> 	public Integer aaa;
> 	public Boolean isAaa() {
略
>	}

上で引用した aaa という public フィールドは
aaa という Integer 型のプロパティを表します.

一方,isAaa() というメソッドは 
aaa という boolean 型のプロパティを表します.

同じ名前のプロパティなのに型が異なっています.
<span id="isAaa"> に対応するプロパティを
メソッドではなく public フィールドで実現すると

  public boolean aaa;

であり,

  public Integer aaa;

と同時に存在することはできません.
メソッドであってもこの矛盾は同じです.

ラジオボタンと condition で使用する名前を
「プロパティ」という観点から見直してください.



なお,[Seasar-user:15850] で指摘されている

[Seasar-user:15850]
> > prerender()メソッドにaaaItemsの中身を書いて、
> 
> この行ぐらいから、少し間違っている使い方を
> しています。

についてですが,間違ってはいません.
もっと楽な使い方があるということだと思います.


-- 
<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 メーリングリストの案内