--.--.--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2010.02.13

第366夜

strutsのお勉強2日目・・・。

仕事でstrutsのFieldChecks.validateMaskの一部を修正したようなメソッドを作成する必要になりました。
作成自体はよいのですがテストが困ります。
元から大部分を持ってくるような感じなので動くんだろうなとは分かるけど、どうやればそのルートに入るかが分からない。

web上で動くクラスだからサーブレットコンテキストとかメッセージリソースとか色々いるようだし・・・。
JUnitでカバレッジを通したいんだけどnullポインタで落ちたり(/ω\)

取り合えずstrutsのソースを見たり、web上で動かして変数の中身見たりしてます。
断片的にだけど自分用のメモを書いておかないと忘れてしまう。
この記事へのトラックバックURL
http://hexagram.blog41.fc2.com/tb.php/394-385cabee
この記事へのトラックバック
この記事へのコメント
Q.検証ルール(例えばmaskなら"^[0-9a-zA-Z]*$"など)をMessageResourcesクラスから取得している箇所があるが、MessageResourcesから取得する条件や設定が分からない。
通常はvalidation.xmlのvar-valueからだと思うが、意味はともかくやり方がわからない。

A.いまのところ分かる範囲で書きます(間違っているかもしれない)。

var.isResource()
上記メソッドでリソースから取得するか、普通にValidation.xmlから取得するかを判定しているらしい。

validation.xml
<form-validation>
<formset>
<form name="sample1Form">
<field property="param1" depends="mask">
<arg key="param1" resource="false" position="0"/>
<!-- このようにresourceのフラグを設定する。bundleはリソース情報のキー名かな? -->
<var resource="true" bundle="org.apache.struts.action.MESSAGE">
<var-name>mask</var-name>
<var-value>mask.value</var-value>
</var>
</field>
</form>
</formset>
</form-validation>

org.apache.struts.action.MESSAGEのキーで設定されるファイル(よく分からないけど、struts-config.xmlで設定するmessage-resources parameter="MessageResources"で指定したファイル?)にmask.valueに対応する値を設定する。

MessageResources.properties
mask.value=^[0-9a-zA-Z]*$

こんな断片的な話で意味があるか(分かるか)は甚だ疑問ですが、ヒント的な意味合いで書いてます。

※これはstruts1.3.5の話。
Posted by hexagram at 2010.02.13 18:28 | 編集
Q.validation.xmlでメッセージの{0}とかに埋める値をkeyに直書きではなく参照にできるか?

A.下記のようなやり方があるようです。

<form-validation>
<formset>
<form name="sample1Form">
<field property="param1" depends="mask">
<arg key="mask.message" resource="true" position="0"/>
<var resource="true" bundle="org.apache.struts.action.MESSAGE">
<var-name>mask</var-name>
<var-value>mask.value</var-value>
<var-jstype>true</var-jstype>
</var>
</field>
</form>
</formset>
</form-validation>
※propertiesファイルに実際の値を下記のように記述する。
mask.message=param1

またvar-valueから取得する方法もあるようです。
<form-validation>
<formset>
<form name="sample1Form">
<field property="param1" depends="mask">
<arg key="${var:chars}" resource="false" position="0"/>
<var>
<var-name>chars</var-name>
<var-value>param1</var-value>
</var>
<var resource="true" bundle="org.apache.struts.action.MESSAGE">
<var-name>mask</var-name>
<var-value>mask.value</var-value>
<var-jstype>true</var-jstype>
</var>
</field>
</form>
</formset>
</form-validation>
Posted by hexagram at 2010.02.13 18:42 | 編集
管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。