PGBox
P
G
Box

html errorsタグ

htmlタグのメニューへ戻る



使用した環境
JDK 6 Update 11
struts 1.3.10

エラーメッセージを出力します。


属性必須意味
bundleメッセージリソースを取得するリクエスト/セッションバインド名を指定。
nameエラーメッセージを保持するbean名を指定する。省略可。
property特定のプロパティに関するエラーメッセージのみを出力する場合に、プロパティ名を指定する。省略した場合は全てプロパティに関するエラーメッセージが出力される。
locale使用するロケールを取得するbean名を指定する。
headerメッセージのヘッダ文字列のキーを指定する。デフォルトは"errors.header"。
footerメッセージのフッタ文字列のキーを指定する。デフォルトは"errors.footer"。
prefixメッセージのプレフィックス文字列のキーを指定する。デフォルトは"errors.prefix"。
suffixメッセージのサフィックス文字列ののキーを指定する。デフォルトは"errors.suffix"。


以下のように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>




htmlタグのメニューへ戻る