- PR -

ValidatorActionFormの使い方

1
投稿者投稿内容
BoBo
会議室デビュー日: 2006/02/23
投稿数: 7
投稿日時: 2006-04-06 01:54
 複数のボタンがフォームにあり、ボタン毎に検証ルールを設定したいので、LookupDispatchAction、ValidatorActionFormを使っています。

下記のようにアクションをチェーンさせて検証対象のactionパスを指定しています。dispatch.jspにFormのフィールドだけが含まれる場合は動作するのですが、requestに保存した値を呼び出すような場合には「スコープ request にBean request.subtitle がありません」と言ったエラーになります。

 アクションをチェーンしているので、ブラウザから再度リクエストを受け付けたとして処理される為だということは分かったのですが、ここから先どうしたらいいのか行き詰まってしまいました。お力をお貸し頂ければと思います。よろしくお願いします。

struts-config.xml
<action
attribute="mydispatchForm"
input="/dispatch.jsp"
name="dispatchForm"
parameter="cmd"
path="/mydispatch"
scope="request"
type="com.testprj.struts.io.MyDispatchAction">
<forward name="this" path="/dispatch.jsp" />
<forward name="register" path="/mydispatch_register.do?cmd=register" />
</action>

<action
attribute="mydispatchForm"
input="/dispatch.jsp"
name="dispatchForm"
parameter="cmd"
path="/mydispatch_register"
scope="request"
type="com.testprj.struts.io.MyDispatchAction">
<forward name="this" path="/dispatch.jsp" />
</action>

validation.xml
<form name="/mydispatch_register">
<field
property="str1"
depends="required">
<arg0 key="str1" resource="false"/>
</field>
</form>
SUK2
ベテラン
会議室デビュー日: 2005/12/27
投稿数: 69
投稿日時: 2006-04-06 17:54
パッと思い付く方法として、requestスコープではなくsessionスコープにオブジェクトを格納すれば、「スコープ request にBean request.subtitle がありません」といった現象は回避出来るのでは無いかと思いました。

引用:

アクションをチェーンしているので、ブラウザから再度リクエストを受け付けたとして処理される為だということは分かったのですが、


リダイレクト扱いになっているんでしょうか?もしかしたら
コード:
 <forward name="register" path="/mydispatch_register.do?cmd=register" redirect="false"/>


とすれば良いかもしれません。

#全て想像の域を出ておらず、申し訳ありません。
BoBo
会議室デビュー日: 2006/02/23
投稿数: 7
投稿日時: 2006-04-08 10:26
返事が遅くなりました。すいません。

SUK2さんのおっしゃるとおり、リダイレクトになっていたのかもしれません。
EasyStrutsを使っているのですが、一度リダイレクトにチェックを入れ、その後チェックを外して試したらエラーにはなりませんでした。でも、EasyStrutsが作成したstruts-configの内容は、この掲示板に添付した内容と変わりありません。
何で?という疑問がありますが、おかげさまで解決しました。

どうもありがとうございました。
1

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