- PR -

パスワード欄に全角かなを入力するとエラーになる

1
投稿者投稿内容
ショッカー
会議室デビュー日: 2008/07/01
投稿数: 4
投稿日時: 2008-07-01 12:05
はじめまして。
現在strutsでwebアプリケーションを作成しています。
validationで問題が発生しています。

標準で半角英数しか入力できないパスワード欄に
無理やり全角かな(例:ああああああ)をコピペ
するとjavascriptのアラートボックスが出ずに、
tilesのデザインを無視した次の画面に遷移してしまいます。

エラーメッセージは<html:erros />の位置に表示はされています。

他のmaxlength,minlengthと同じようにjavascriptのアラート
で表示をしたいと考えています。

【実行環境】
winXPpro
eclipse 3.2
jdk 1.5.0_15
struts 1.38
tomcat 5.5

【validation.xmlの設定】
<field
property="password"
depends="required,maxlength,minlength,mask">
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z0-9]*$</var-value> ←半角英数以外ははじく
</var>
<msg name="required" key="error.password.required" />
<msg name="maxlength" key="error.password.maxlength" />
<msg name="minlength" key="error.pasword.minlength" />
<msg name="mask" key="error.password.nohalfsizekatakana" /> ←このメッセージが次画面で表示
</field>

【tilesのレイアウト】
header.jsp
menu.jsp
body.jsp ←次画面でここだけが表示され、エラーメッセージ表示
footer.jsp

お手数ですが、どなたかご存じの方いらっしゃいましたら
ご教授願います。
わたなべ
大ベテラン
会議室デビュー日: 2007/12/09
投稿数: 123
お住まい・勤務地: 札幌
投稿日時: 2008-07-01 12:27
>標準で半角英数しか入力できないパスワード欄に無理やり全角かな
この時点でどうにかなると考えるのはおかしいんですけど。
そもそもその理論でいくと、「JavaScriptを無効にすると、アラートが出ない」とかと同じレベル。

Validatorでは半角英数でマスクしており、エラーメッセージを表示しているので奇異対される動作です。
そもそもコピペで強引に全角を入れる状況はテストでしか起こりえません。
したがってJavaScriptでアラートが出ない特殊なケースとして仕様に組み込む方が妥当です。

それでも、その仕様が重大な価値があり、実装しないとユーザに莫大な損失が出るのであれば、プロジェクトの判断としてJavaScriptのコードを修正する工数を積んだらどうでしょう。

ショッカー
会議室デビュー日: 2008/07/01
投稿数: 4
投稿日時: 2008-07-01 13:40
>それでも、その仕様が重大な価値があり、実装しないとユーザに莫大な損失が出る

検証はちゃんとできているので、デザインが崩れるということ
以外は問題ないです。よってこのためにjavascriptを修正する工数を増やすまでも
ないかなと思いました。

ご指摘の通り、仕様に組み込むことを上司に相談してみます。

的確なご回答ありがとうございました。
Rey
会議室デビュー日: 2004/11/14
投稿数: 7
投稿日時: 2008-07-01 15:27
クローズしてる様子ですが参考資料。

標準ルールのmaskに対するクライアントチェックでは
下記のvalidateMaskが使用されます。
http://commons.apache.org/validator/javascript/org/apache/commons/validator/javascript/index.html
ということでtype="password"は対象外なのが確認できます。
ショッカー
会議室デビュー日: 2008/07/01
投稿数: 4
投稿日時: 2008-07-02 00:01
>ということでtype="password"は対象外なのが確認できます。

自分で質問の後commons/validator/javascriptを
調べたところまさにその通りでした。

現在のところ、わたなべ様の仰るように
検証はされており重大なエラーとは言い難いので
この問題はプロジェクトの課題として
挙げておくことにしました。

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

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