- PR -

textフィールドにFormの値を設定するには

1
投稿者投稿内容
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2006-04-26 13:23
お世話になります。立て続けの質問になってしまいますが
よろしくお願い致します。

Strutsを使用し 画面の入力チェック(html:text)を行い
エラーだった場合に入力する前の状態にもどってしまう
という現象にはまってます。

画面上は
コード:
ActionErrors errors = (ActionErrors)request.getAttribute(org.apache.struts.Globals.ERROR_KEY);
if (errors != null && errors.size() > 0) { %>
   エラーあり
<% }else{ %>
	<html:text property="item" name="items" />
<% } %>


としていまして、問題はエラーありの個所に入力した値をそのままに
する処理を入れたいのですがどのようにすればよいのでしょうか?

(この処理自体はIterateにてグルグルとまわっています。
ショッピングカートにしなものを追加するような処理を行っています。)

else句のtextフィールドはサーバ側の値を見にいっていますが
エラー有り時、FORMから取得(?)するにはどのようにすれば
いいのでしょうか?
ハツキタツミ
大ベテラン
会議室デビュー日: 2005/05/24
投稿数: 108
投稿日時: 2006-04-26 16:49
なんだか、さっぱり意味不明ですので、ポイントだけ。

コード:
ActionErrors errors = (ActionErrors)request.getAttribute(org.apache.struts.Globals.ERROR_KEY);
if (errors != null && errors.size() > 0) { %>
   エラーあり
<% }else{ %>
	<html:text property="item" name="items" />
<% } %>



これだとエラー発生時にはinputタグそのものが表示されないのでは?

引用:

としていまして、問題はエラーありの個所に入力した値をそのままに
する処理を入れたいのですがどのようにすればよいのでしょうか?



入力チェックをActionForm#validateでおこなっているなら、Formがsubmitされた時点でActionFormにpopulateされて値がセットされています。(これを元にvalidateしているんだから当然ですが)
ですので、値がクリアされることはありません。

#ActionForm#resetで何かやってるでFA?
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2006-04-26 17:23
日本語がおかしくなっていたようで申し訳ないです

引用:

これだとエラー発生時にはinputタグそのものが表示されないのでは?


if句にどのように記述すればいいかわからなかった為
引用:

問題はエラーありの個所に入力した値をそのままに
する処理を入れたいのですがどのようにすればよいのでしょうか?


で、伝えた気になってしまってました。

validator絡みについては struts-config.xml、
form-bean タグにて typeに
org.apache.struts.validator.DynaValidatorActionForm
指定しています。

またvalidation.xml, validator-rules.xml
を用いて
org.apache.struts.validator.FieldChecksクラスを使用した
入力チェックを行っています。
(resetなども行っていません)

このあたりの構成、始めたばかりで抑えきれてないため
説明が不足していたらご指摘いただけるとありがたいです。


この構成で入力フィールドに不正な値 a などの文字を入力
するとエラーチェックが走りActionクラスは通らずに
同じJSPへ遷移します。

この際に入力した aが もともと入力されていた値に
書き換わってしまいます。
ハツキタツミ
大ベテラン
会議室デビュー日: 2005/05/24
投稿数: 108
投稿日時: 2006-04-26 17:46
なんだかStrutsに振り回されているような気がしますが、とりあえず、
ActionFormを使って、問題が発生する最低限のコードを作ってみましょう。

そこから、DynaValidatorActionFormを使う形にもっていったほうが、より理解が進むと思われます。
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2006-04-26 17:58
ご指摘のとおりかなり振り回されています
タグライブラリが便利なようで、なれてない分
使いにくいと感じています。

現状、 業務レベルのものをいきなり作成しているため
最低限コード作成をしリフレッシュしてみます。

1

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