サーバサイドでのバリデーション。
ActionFromのvalidateメソッドに実装。
チェックのロジック自体の実装は悩むことはないのだが、
エラーの返し方が1.2以前と1.3では若干変更されていた。
validateメソッド内の処理
1.2以前
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request){
ActionErrors errors = new ActionErrors();
if (name.equals("")) {
errors.add("name", new ActionError("invalid.name"));
}
return errors;
}
1.3
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request){
ActionErrors errors = new ActionErrors();
if (name.equals("")) {
errors.add("name",
new ActionMessage("invalid.name","name"));
}
return errors;
}
ActionErrorsのaddメソッドの使用方法が変わった。
第二引数がActionErrorクラスからActionMessageに変更。
第一引数が、html上に出力させる際に対応させる
プロパティ名(項目名)
第二引数のActionMessageの第一引数がエラーメッセージ
プロパティのKey
第二引数のActionMessageの第二引数がエラーメッセージに
渡すパラメタ。
エラーメッセージのプロパティでは{0}等で複数設定できる。
エラーメッセージのプロパティ(MessageResources_ja.properties)
(例) invalid.name=名前は必ず入力するようにして下さい。{0}
今回の初歩的なミスは、エラーが画面に表示されなかったこと。
これは、html:errorsのタグのprefixの設定をjspに忘れていたこと。
<%@ taglib uri="http://struts.apache.org/tags-html"
prefix="html" %>
ActionFromのvalidateメソッドに実装。
チェックのロジック自体の実装は悩むことはないのだが、
エラーの返し方が1.2以前と1.3では若干変更されていた。
validateメソッド内の処理
1.2以前
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request){
ActionErrors errors = new ActionErrors();
if (name.equals("")) {
errors.add("name", new ActionError("invalid.name"));
}
return errors;
}
1.3
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request){
ActionErrors errors = new ActionErrors();
if (name.equals("")) {
errors.add("name",
new ActionMessage("invalid.name","name"));
}
return errors;
}
ActionErrorsのaddメソッドの使用方法が変わった。
第二引数がActionErrorクラスからActionMessageに変更。
第一引数が、html上に出力させる際に対応させる
プロパティ名(項目名)
第二引数のActionMessageの第一引数がエラーメッセージ
プロパティのKey
第二引数のActionMessageの第二引数がエラーメッセージに
渡すパラメタ。
エラーメッセージのプロパティでは{0}等で複数設定できる。
エラーメッセージのプロパティ(MessageResources_ja.properties)
(例) invalid.name=名前は必ず入力するようにして下さい。{0}
今回の初歩的なミスは、エラーが画面に表示されなかったこと。
これは、html:errorsのタグのprefixの設定をjspに忘れていたこと。
<%@ taglib uri="http://struts.apache.org/tags-html"
prefix="html" %>