- PR -

アクセッサの命名規則

1
投稿者投稿内容
わんこ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 46
投稿日時: 2003-09-03 12:09
Strutsの1.0.2を使ってアプリケーションを構築しています。

JSPでテキストボックスのproperty属性(name属性)
aTest
などとすると、
データを取得することができません。
Tをtにしたらできました。他の文字の組合せで2文字目を大文字にしたのもできませんでした。
2文字目が大文字だとダメなのでしょうか?

ダメならダメでネーミングのし直しが必要なのですが、量が多い為、
しっかりとした理由が知った上で修正をすることにしたいのですが
どなたか教えていただけないでしょうか?

どうぞよろしくお願いします。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2003-09-05 12:01
引用:

わんこさんの書き込み (2003-09-03 12:09) より:
JSPでテキストボックスのproperty属性(name属性)
aTest
などとすると、
データを取得することができません。
Tをtにしたらできました。他の文字の組合せで2文字目を大文字にしたのもできませんでした。
2文字目が大文字だとダメなのでしょうか?

ダメならダメでネーミングのし直しが必要なのですが、量が多い為、
しっかりとした理由が知った上で修正をすることにしたいのですが
どなたか教えていただけないでしょうか?



私の場合、タグライブラリの属性名で似たような問題にはまりました。
わんこさんの問題が同じ問題なのかどうかはわかりませんが、
私のときの問題は、ビーンのsetter/getterの命名規則によるものでした。

--下記はその詳細です-----
setter/getter名から属性名を導き出す際に
java.beans.Introspectorクラスのdecapitalizeメソッド
が使われていて、このメソッドの仕様によるもののようです。

decapitalizeメソッドのドキュメントより引用:
>> 通常は最初の文字を大文字から小文字に変換しますが、特殊な場合、
>> たとえば複数の文字があって最初と2番目の両方の文字が大文字の場合は、変換しません。

2文字大文字が続いた場合に固有の省略語(例:URL、SQL)であると判断しているようです。
わんこ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 46
投稿日時: 2003-09-05 13:12
よねKENさん有難うございます!

たぶん、私のところで起きている問題と全く同じです。
テキストボックスのproperty属性はフォームビーンのアクセッサ名になるので、
aTestと命名した場合、アクセッサは getATest,setATestとなるので
よけKENさんの書き込みの内容の通りだと思われます。

Strutsのドキュメントを調べていたのですが、理由がわからず困ったいたので
これで明確な理由がわかり勉強になりました。
本当にありがとうございました。
また機会がありましたらよろしくお願いいたします
1

スキルアップ/キャリアアップ(JOB@IT)