- 追加された行はこの色です。
- 削除された行はこの色です。
#topicpath
----
ユーザ入力値は必ずValidateする必要がありますが、Actionクラスに入力チェック処理などを書くと、ビジネスロジックと入力チェック処理が混在し、あまりキレイとはいえません。また入力した内容はActionFormが責任を持つべきだという思想(?)からか、ActionFormにはvalidateする統一的なI/Fを持っています。ちなみにこの方法はStruts1.0までのもので、1.1以降はValidatorプラグインが主流となるようです。
***validateの使用方法
あらかじめ、struts-config.xmlで
<action
path="/user_regist"
input="/regist.jsp" <-エラー発生時の遷移先。
type="kino.action.UserRegistAction"
name="userRegistForm"
scope="request"
attribute="userRegistForm">
のようにエラー遷移先(/regist.jsp)を定義しておきます。~
次にvalidate処理の記述です。ActionFormにはvalidateメソッドが定義されているのでこのメソッドをオーバーライドします。下の例ではユーザ入力値が空だったり、パラメータがリクエストにのってこなかったりしたときに、エラーを表示しています。
public ActionErrors validate(ActionMapping mapping,HttpServletRequest request){
ActionErrors errors = new ActionErrors();
//ユーザIDが空だったら
if(userId==null || userId.length()==0){
ユーザIDのテキストボックスでエラーが発生した、エラー文言は「ユーザID」
errors.add("userId",new ActionError("errors.required","ユーザID"));
}
return errors;
}
さらにJSP側では、エラー文言を表示したい箇所に
<html:errors property="userId"/>
と記述しておきます。~
加えて、ApplicationResources.propertiesに下記内容を追加(ファイルは/WEB-INF/classesにある)
errors.header=<hr><font color="red"><h3>ERROR</h3>
errors.footer=<hr></font>
errors.required={0} Required ← {0}にerrors.addでセットした文言が入る。
と記述しておきます。~
さてerrors.add("userId",new ActionError("errors.required","ユーザID"));の意味は~
userIdが、<html:errors property="userId"/>に対応し、"errors.required"がプロパティファイルのキーに対応し"ユーザID"が、{0}に対応しています。
まとめると、errors.add("userId",new ActionError("errors.required","ユーザID"));
で、「errors.required={0} Required」の{0}を「ユーザID」という文字列で置換して
ユーザID Required
という文字列が生成されます。その文字列が、、<html:errors property="userId"/>と書いた箇所に表示されます。
なんか、ややこしいですね。
----
#comment
#navi(Struts)
#navi(Java/Struts)
SIZE(10){現在のアクセス:&counter;}