JMemo014

1.3.8とか1.3.10を使用する場合。

コンテキストルートが変わっても大丈夫なスタイルシート等の指定

例えばpages配下にstyle.cssがある場合。
<LINK REL="stylesheet" HREF="<html:rewrite page="/pages/style.css"/>">
こうすると、表示時には
<LINK REL="stylesheet" HREF="/コンテキストルート/pages/style.css">
となってくれる。

アクションフォームのフィールド名に制限がある

どうも、フィールドだからといってハンガリアン式に「mName」とかやると、
ゲッターがgetMNameとかなって、それが原因かどうかは分からないけど
Strutsに「ゲッターがない」って怒られちゃう。
フィールド名は2文字目を大文字にしちゃだめらしい。

関連情報発見。

■Struts の ActionForm では2文字目が大文字の変数名を使えない - Lazy Diary @ はてな
http://d.hatena.ne.jp/satob/20080225/p1

以下は上記URLからの引用です。
■[Java][できない] Struts の ActionForm では2文字目が大文字の変数名を使えないAdd Star

Struts では、内部で使っている Jakarta BeanUtils の制限で、ActionForm に2文字目が大文字の変数名(例えば「xPos」「yPos」とか)を使えない。

これは JavaBeans の仕様 *1 が原因。

    まず、先頭から2文字が大文字の変数名では、UpperCamelCase <-> lowerCamelCase の変換を行わない*2。
    これに沿って、Introspector が getter/setter の名前から変数名を推測する*3。
    すると、この推測の際に以下のような処理が行われる。
        変数「xPos」の getter 「getXPos」が存在する。
        「getXPos」から先頭の get を取って「XPos」
        これを decapitalize するが、先頭の2文字が大文字なのでそのまま「XPos」とする
        「getXPos」に対応する変数の名前は「XPos」と推測される

というわけで、「xPos」という名前の変数を使っているはずが「XPos」という名前の変数を探しにいってしまうので問題が発生する。

回避方法は存在しない。Jakarta の Bugzilla にも Bug があったはずだが Bug # は失念……

    Bug#23558だったが今は参照できない模様。

なるほど。ありがとうございます。
最終更新:2012年05月14日 11:06