Apache Struts - エラーの分離Advertisementエラーを分離する
Strutsでは発生したアクションエラー(ActionError, ActionMessage)がキーと値の組み合わせで一元管理されている。
異なるキーでエラーを格納することで、エラーを論理的に分離することができる。
エラーチェックコード
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.DynaActionForm;
public class ActionErrorsAction extends Action {
private static Log log = LogFactory.getLog(ActionErrorsAction.class);
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
log.debug(getClass().getName());
DynaActionForm dynaForm = (DynaActionForm)form;
String name = (String)dynaForm.get("name");
String userid = (String)dynaForm.get("userid");
String password = (String)dynaForm.get("password");
log.debug("name\t"+name);
log.debug("userid\t"+userid);
log.debug("password\t"+password);
ActionMessages errors = new ActionMessages();
if(isEmpty(name)){
errors.add("info", new ActionMessage("errors.required", "name"));
}
if(isEmpty(userid)){
errors.add("system", new ActionMessage("errors.required", "userid"));
}
if(isEmpty(password)){
errors.add("system", new ActionMessage("errors.required", "password"));
}
if(errors.size() > 0){
log.debug("error(s) info\t" + errors.size("info") + "件");
log.debug("error(s) system\t" + errors.size("system") + "件");
saveErrors(request, errors);
return mapping.getInputForward();
}
return mapping.findForward("success");
}
private boolean isEmpty(String param){
return (param == null || param.equals(""));
}
}
jspでの分離<b>group1</b> <html:errors property="info"/> <b>group2</b> <html:errors property="system"/> リダイレクトされたアクション内での分離(例:input=xxx.do)
ActionMessages messages = (ActionMessages)request.getAttribute(Globals.ERROR_KEY);
log.debug("info\t"+messages.size("info"));
log.debug("system\t"+messages.size("system"));
Advertisement |
ショートカット・634トップページ・このカテゴリのトップページに戻る ・634ラボ サイト検索Y!ログール |