#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"/>と書いた箇所に表示されます。 なんか、ややこしいですね。 ---- この記事は #vote(おもしろかった[1],そうでもない[0]) #comment #navi(Java/Struts) SIZE(10){現在のアクセス:&counter;}