[Seasar-user:20617] Re: [Teeda] ネストしたプロパティの対応について
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2011年 2月 24日 (木) 18:00:22 JST
小林 (koichik) です.
Date: Thu, 24 Feb 2011 15:51:02 +0900
From: あきら <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:20616] Re: [Teeda] ネストしたプロパティの対応について
> >> せっかくなので、コミッタとして参加してもらったほうがよさそうですね。
> > 私も賛成です。
> > あきらさん、いかがでしょうか?
>
> ぜひお願いいたします。
> akira で昔にトラッキングにIDは作成していました
うーん、自分としては
・「この機能を追加するためコミッタになってもらう」のは反対
・「この機能を追加しなくても、Teeda に継続的に関わってもらうため
コミッタになってもらう」のは大歓迎
なのですが、どちらでしょう?
で、この機能に関しては、現状では見送りたい気分です。理由は二つ。
理由の一点目は仕様に関して。
ネストしたプロパティの区切りにアンダースコアを使っていますが、
アンダースコアは Java では識別子として使える文字です。
つまり、アンダースコアを含んだプロパティ名は正しいということです。
それを区切り文字として使うことは、仕様として好ましくありません。
Dto のプロパティにアンダースコアを使うのはまれだとは思いますが、
Seasar2 (SMART deploy) ではサブパッケージの区切りに使っているように、
Teeda 利用者でも特別な意味合いで使っている可能性はあるわけです。
そうなると、たとえば HTML でaaa_bbb_ccc と書かれた場合、
aaa_bbb_ccc
aaa_bbb.ccc
aaa.bbb_ccc
aaa.bbb.ccc
のいずれにも解釈できて、現状の実装では最初と最後のだけ使えるのかな?
軽くしかみてないから不確かですが、曖昧さは排除できないと思います。
HTML の id でネストしたプロパティを表す場合、その区切り文字は
・Java の識別子として使えない
・HTML の id として使える
・JSF の id として使える
文字から選ぶべきです。しかし、使える文字はもう残っていなかったような?
なので、以前検討していたときは -- (ハイフン 2 個) を使うという苦し紛れの
案を考えていました。すっかり放置になってしまいましたが。
理由の二点目は、表示だけでは中途半端ということ。
実は、表示だけなら現状でも JSF タグを使って可能です。
<span id="aaa_bbb_ccc"></span>
と同じことは
<h:outputText value="#{aaa.bbb.ccc}" />
のように書けるはず。
ピュアな HTML ではなくなりますが、te:〜 とか使えばどのみちピュアでは
ないですよね。
<h:outputText> だとボディにプレビュー用の文字を入れられないのかな?
そうするとちょっと面倒だけど
<h:outputText value="#{aaa.bbb.ccc}" /><span id="mockXxx">ほげ</span>
ってなっちゃいますが、まぁ、できないことはないわけです。
そして 1 点目であげた曖昧さはありません。つまり一長一短。
となると、ずっと bug fix しかしていない状況で 1.0.14? 1.1? として
リリースするほどの新機能といえるのかどうか。
そこまでではない、というのが自分の印象です。
--
<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>
<property name="twitter">"http://twitter.com/koichik"</property>
</component>
Seasar-user メーリングリストの案内