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文字目を大文字にしちゃだめらしい。
関連情報発見。
以下は上記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