- PR -

StrutsでValidatorのメッセージの表示について

1
投稿者投稿内容
sumin
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 93
投稿日時: 2004-02-03 15:44
いつも拝見させて頂いてます。

Struts1.1のValidatorを拡張し、カスタムバリデータを作成しました。warに取りいれて問題なく動くまでは確認しましたがValidationに失敗した時のメッセージの表示はどうすればいいでしょうか?ネットとかの例に拠りますと下記のような書き方をするそうですが、いまいち論理的に理解出来ないし、実際画面が表示されません。


<logic:messagesPresent>
<!--bean:message key="errors.header"/-->
<ul>
<html:messages id="error">
<li><bean:write name="error"/></li>
</html:messages>
</ul><hr>
</logic:messagesPresent>


画面は500エラーを出すし、ログには

SRVE0026E: [サーブレット・エラー]-[Cannot find bean errors in any scope]: javax.servlet.jsp.JspException: Cannot find bean errors in any scope

と出ます。Validationが失敗した時に何らかの処理が走ってJSPで画面にエラーの内容が表示されるべきだと思いますがそこら辺の資料が全然見えません。

書き方でもいいですがこの辺の仕組みが知りたいですが。。
sumin
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 93
投稿日時: 2004-02-03 15:56
上記の質問ってあまり整理されてないですね。整理しますと、

 ・エラーログから見ると[Cannot find bean error in any scope]となってますのでerrorのidを持つJavaBeansをどっかで予めどこかのスコープに入れて置いたはずですね。これってStrutsで勝手にやってくれると思いますが、
@どこで?
 Aどうやって?
 B何でerrorと言うid?これは固定?変更可能?
と言うのが質問です。

 ・Strutsを使用しない普通のJSPならJavaBeansを使用する前にリクエストとかにそのJavaBeansをセットして、JSPの上段で<%@ useBean ... %>などで予め宣言すべきですね。これがなんで省略できるんだ?どんな仕組みで?と言うのが疑問です。


 自分の持っている2冊のStrutsの本ではその説明がなかったし、ネットからもそれらしき説明がなかったのでここに聞きます。


 以上、宜しくお願いします。
ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2004-02-03 17:35
コード:
<html:errors/>


はご存知?
sumin
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 93
投稿日時: 2004-02-03 19:24
それは知ってますが<html:errors/>を使っても同じくエラーです。

[サーブレット・エラー]-[Missing message for key &quot;errors.header&quot;]: javax.servlet.jsp.JspException: Missing message for key "errors.header"
at org.apache.struts.taglib.bean.MessageTag.doStartTag(MessageTag.java:297)
at org.apache.jsp._fail._jspService(_fail.java:111)
at com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase.service(HttpJspBase.java:89)
at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
at com.ibm.ws.webcontainer.jsp.servlet.JspServlet$JspServletWrapper.service(JspServlet.java(Compiled Code))


だと。。。
ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2004-02-03 20:02
引用:

suminさんの書き込み (2004-02-03 19:24) より:
それは知ってますが<html:errors/>を使っても同じくエラーです。

[サーブレット・エラー]-[Missing message for key &quot;errors.header&quot;]:



エラーメッセージの読み方はわかりますか?
errors.header というキーが見つからないと言うてますよ。
sumin
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 93
投稿日時: 2004-02-04 11:02
お騒がせしました。 原因は分かりました。
Strutsのソースを追った結果、そもそもメッセージ用のpropertiesファイルが設定されてない事に気づきました。struts-config.xmlに下記のような設定をしておいたのでいいだろうとおもっていたんですが間違いでした。

<message-resources parameter="application"/>

web.xmlにActionサブレットの初期パラメータとして下記のように設定したら上手く行くようになりました。

 
<init-param>
<param-name>application</param-name>
<param-value>[メッセージファイル名]</param-value>
</init-param>

そして、何でそんな事が本に載ってないんだよ?と怒って再び持ってる本を指したらちゃんと書かれてありました。(俺ってバカ!?)

ただ、言い訳として、もっと分かりやすく書いといてくれよと!今参照しているのは「Strutsインアクション」ですが、詳しいようであまり実践的ではないような気がします。Struts1.1とも微妙にずれているし、一つの主題についての説明があっちこっちに散らばってまして今回のような混乱があったと勝手に弁解をさせて頂きます。

以上、答えてくれたみなさん、ありがとうございました。




[ メッセージ編集済み 編集者: sumin 編集日時 2004-02-04 11:11 ]
1

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