- PR -

Validaterを使うと、初期表示でエラーが表示される

投稿者投稿内容
いわ
会議室デビュー日: 2003/09/22
投稿数: 18
投稿日時: 2003-09-22 01:28
こんにちは。

現在あるユーザ登録画面を作成しているのですが、最初にその画面を表示した段階で、エラーメッセージが出てしまいます。

そのエラーメッセージは <html:errors />によって出ている物ですが、入力前は何も出て欲しくないのです。

[Bean]
public class RegistUser extends ValidatorForm {}

[validation.xml]
<form name="RegistUser">
<field property="id" depends="required,mask">
<arg0 key="words.id" />
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z][0-9a-zA-Z]*$</var-value>
</var>
</field>
</form>

メッセージリソース等は正常に読み込めていまして、JavaスクリプトONの状態ではダイアログボックスと正常なエラーメッセージが表示されます。件のエラー以外は正常に画面も遷移します。

どなたかお分かりになる方おられませんでしょうか。。。

pooh
会議室デビュー日: 2002/06/26
投稿数: 1
投稿日時: 2003-09-22 11:15
特に何も書いていらっしゃらないので推測でしかないのですが、これはStrutsを使われているのですよね?
その前提で書かせていただきますので、外していたらごめんなさい。

struts-config.xmlでどのように記述されているかわかりませんが、RegistUserフォームを使用するアクションをいきなり呼び出されているからではないでしょうか。

まずは、登録画面のjspを呼び出すようにして、その登録画面から次画面へ遷移するタイミングでRegistUserのチェックが行われるように設定すれば、エラーメッセージは出なくなると思います。

いわ
会議室デビュー日: 2003/09/22
投稿数: 18
投稿日時: 2003-09-22 11:28
すみません。完全に書くのを忘れてました。Strutsを使ってやっています。

おっしゃりますように、現在直接
/xxxxx/RegistUser.do
を呼んでいます。

下のは、これも忘れていました、struts-config.xml の該当部分です。
jspを直接呼ぶように変えてみます。

<action
attribute="RegistUser"
input="/WEB-INF/pages/system/registUser.jsp"
name="RegistUser"
path="/RegistUser"
scope="request"
type="xxxxx.xxxxx.contents.sys.RegistUserAction">
<forward name="success" path="/WEB-INF/pages/other/finish.jsp" />
</action>

(jspをWEB-INF以下に置いていたのですが、一般的にどこに置くものなんでしょうか。
直接呼ぶ必要がないならWEB-INF以下が良いだろうと思っていたので。今回の場合は上へ上げる必要がありますが。)

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

[ メッセージ編集済み 編集者: IWA 編集日時 2003-09-23 15:31 ]
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2003-09-22 11:36
引用:

IWAさんの書き込み (2003-09-22 11:28) より:
jspをWEB-INF以下に置いていたのですが、一般的にどこに置くものなんでしょうか。
直接呼ぶ必要がないならWEB-INF以下が良いだろうと思っていたので。
今回の場合は上へ上げる必要がありますが。


 え?
JSPはHTMLと同じなので、WEB-INF以下に置くことはありえませんよ。
だいたいそんなとこに置いて、どうやってJSPを呼ぶのでしょうか?

[ メッセージ編集済み 編集者: taku 編集日時 2003-09-22 11:37 ]

[ メッセージ編集済み 編集者: taku 編集日時 2003-09-22 11:38 ]
いわ
会議室デビュー日: 2003/09/22
投稿数: 18
投稿日時: 2003-09-22 11:47
struts-config.xmlに以下のように書いて、すべてXxxx.do
<forward name="success" path="/WEB-INF/pages/other/finish.jsp" />
から見ていました。データ入力する画面は、これが始めてでしたので、これで事足りていたというわけでした・・・。

poohさん、
ご指摘通り、struts-config.xml を変えて、jspの配置を変えて、直接jspを読み込むと全てうまくいきました!
ありがとうございました。

[ メッセージ編集済み 編集者: IWA 編集日時 2003-09-22 11:49 ]
moke
会議室デビュー日: 2003/09/22
投稿数: 6
投稿日時: 2003-09-22 15:59
引用:

takuさんの書き込み (2003-09-22 11:36) より:
 え?
JSPはHTMLと同じなので、WEB-INF以下に置くことはありえませんよ。
だいたいそんなとこに置いて、どうやってJSPを呼ぶのでしょうか?



WEB-INF以下にJSPを置くとアドレス直打ちでJSPを開けなくなります。

というわけで私はアドレス直打ちによるJSPへの不正遷移を防ぐ目的で、
welcome file以外は全てWEB-INF/jspの中に置くようにしてます。
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2003-09-22 16:23
引用:

mokeさんの書き込み (2003-09-22 15:59) より:
引用:

takuさんの書き込み (2003-09-22 11:36) より:
 え?
JSPはHTMLと同じなので、WEB-INF以下に置くことはありえませんよ。
だいたいそんなとこに置いて、どうやってJSPを呼ぶのでしょうか?



WEB-INF以下にJSPを置くとアドレス直打ちでJSPを開けなくなります。

というわけで私はアドレス直打ちによるJSPへの不正遷移を防ぐ目的で、
welcome file以外は全てWEB-INF/jspの中に置くようにしてます。


 実際に試して見ましたが、
確かにクライアントからは見えないみたいですね。
これってクライアントから一切見えないのですよね?
もしそうならJSPにする意味が一切ないんじゃ・・・。
moke
会議室デビュー日: 2003/09/22
投稿数: 6
投稿日時: 2003-09-22 18:23
引用:

takuさんの書き込み (2003-09-22 16:23) より:

 実際に試して見ましたが、
確かにクライアントからは見えないみたいですね。
これってクライアントから一切見えないのですよね?
もしそうならJSPにする意味が一切ないんじゃ・・・。



 WEB-INF以下にJSPを置くとアドレス直打ちでは開けませんが、
servletなどからforwardすれば開くことができます。
strutsならば
<forward name="success" path="/WEB-INF/index.jsp" />
としてsuccessにforwardしてやればOKです。

 目的としては入力.jsp>確認.jsp>完了.jspとして遷移するはずが
いきなり完了.jspを開かれて不正な実行処理を起動されたり、
NullPointerExceptionのスタックトレースが画面に表示されたりといった
システムで予期されていない画面遷移を抑止すると言うことを期待しています=D

[ メッセージ編集済み 編集者: moke 編集日時 2003-09-22 18:25 ]

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