リファレンストップへ Java | html errorsタグ使用した環境 JDK 6 Update 11 struts 1.3.10 エラーメッセージを出力します。
以下のようにJSPに記述しておく事で、入力エラーが発生した場合のメッセージ表示が可能になります。 <html:errors /> 特定のプロパティのエラーメッセージのみを表示したい場合は、プロパティ名を指定します。 <html:errors property="xxx" /> ヘッダやフッタを出力したくない場合は、以下のように該当する属性で空を指定します。 <html:errors header="" footer="" prefix="" /> 入力チェックからエラーメッセージ表示までの簡単なサンプルを作成してみます。 まず、MessageResources.propertiesにヘッダやフッタに使用するキーや、エラーメッセージの定義を記述します。 [MessageResources] errors.header=<div style="background-color:#ffdddd;"> errors.prefix=・ errors.suffix=<br /> errors.footer=</div> error.number={0}は数字で入力してください。 struts-configでは、バリデーションを有効にしておきます。 [struts-config] <action path="/sample" name="SampleForm" type="pgbox.action.SampleAction" validate="true" input="/WEB-INF/view/sample.jsp" scope="request"> <forward name="success" path="/WEB-INF/view/sample.jsp" /> </action> フォームでは以下のような入力チェックを行います。 [SampleForm.java] public class SampleForm extends ActionForm { private String param1; private String param2; @Override public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if (!isNumber(param1)) { errors.add("param1", new ActionMessage("error.number", "パラメータ1")); } if (!isNumber(param2)) { errors.add("param2", new ActionMessage("error.number", "パラメータ2")); } return errors; } /** * 数値のみで構成されている場合にtrueを返す。 * @param str * @return */ private boolean isNumber(String str) { if (str == null) return true; return str.matches("^[0-9]*$"); } ※ 以下setter, getter } アクションでは特に何もしていません。 [SampleAction.java] public class SampleAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form0, ... return mapping.findForward("success"); } } JSPは以下のように記述します。 <%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <html:errors /> <html:form> パラメータ1:<html:text property="param1" /><br /> パラメータ2:<html:text property="param2" /><br /> <br /> <html:submit /> </html:form> http://localhost:8080/アプリケーション名/sample.do にアクセスしてみます。 数値以外を入力してボタンを押下すると、以下のように入力エラーとなりメッセージが表示されます。 出力されるhtmlは以下のようになります。(改行やタブは見やすいように調整してあります。) <div style="background-color:#ffdddd;"> ・パラメータ1は数字で入力してください。<br /> ・パラメータ2は数字で入力してください。<br /> </div> <form name="SampleForm" method="post" action="/struts-sample/sample.do"> パラメータ1:<input type="text" name="param1" value="aaa"><br /> パラメータ2:<input type="text" name="param2" value="bbb"><br /> <br /> <input type="submit" value="Submit"> </form> |
|