Xdoclet?を使うときには、struts-plugins.xml に plug-inの設定を行い、Xdoclet?によってstruts-config.xml にマージする。
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml" /> </plug-in>
/*
* Copyright(c)2004-2005 **********. All Rights Reserved.
*/
package ****.****.****;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
/**
* AllForm.
* @struts.form
* name="AllForm"
* @author
* @version $Id$
*/
public class AllForm extends ValidatorForm {
private Byte byteForm;
private Date dateForm;
private Double doubleForm;
private Float floatForm;
private Integer integerForm;
private Long longForm;
private Short shortForm;
private String alnumForm;
private String creditcardForm;
private String emailForm;
private String stringForm;
/**
* <pre>
* Validatorの設定は、setterメソッドに定義します。
*
* ◎struts.validatorで
* -必須チェック=required
* -正規表現チェック=maks
* を行います。
*
* -必須チェックのエラーメッセージは、application.propertiesの
* errors.required です。
* -正規表現チェックのエラーメッセージは、application.propertiesの
* errors.invalid です。
* -application.propertiesとapplication_ja.propertiesを用意することにより
* クライアント側の言語設定によりメッセージをかえることができます。
*
* application.properties
* errors.required={0} is required.
* errors.invalid={0} is invalid.Please input {1} form.
* AllForm.alNum=Alphabet or Numeric Form
*
* application_ja.properties
* errors.required={0}は、必須入力項目です
* errors.invalid={0}は、不正な入力形式です。{1}の形で入力してください。
* AllForm.alNum=英数入力項目
*
* ◎struts.validator-varで
* チェック項目のパラメータを設定します
*
* ◎struts.validator-argsで
* チェックエラーメッセージのプレイスホルダに埋め込む文字列の設定をします。
* 複数のエラーメッセージがあっても同じ順番で埋め込まれます。
* -arg*resourceを使うと、application.properties から文字列を引いてきます
* -arg*valueを使うと、即値を設定できます。
* --即値には、${var:****}の形式で、struts.validator-varの値を参照させる
* ことができます
* </pre>
* @struts.validator
* type="required"
* @struts.validator
* type="mask"
* @struts.validator-var
* name="mask"
* value="[0-9a-zA-Z]*"
* @struts.validator-args
* arg0resource="AllForm.alNum"
* arg1value="${var:mask}"
* @param alnumForm alnumForm を設定。
*/
public void setAlnumForm(String alnumForm) {
this.alnumForm = alnumForm;
}
/**
* @return alnumForm を戻します。
*/
public String getAlnumForm() {
return alnumForm;
}
/**
* @struts.validator
* type="byte"
* @struts.validator-args
* arg0resource="AllForm.byte"
* @param byteForm byteForm を設定。
*/
public void setByteForm(Byte byteForm) {
this.byteForm = byteForm;
}
/**
* @return byteForm を戻します。
*/
public Byte getByteForm() {
return byteForm;
}
(中略)
/**
* reset.
* resetメソッドでJSPのFormに初期値を定義することができます。
* @param map ACTION MAPPING
* @param req HTTP REQUEST
*/
public void reset(ActionMapping map,HttpServletRequest req){
setAlNumForm( "1234567890abcdef" );
setByteForm( new Byte(0) );
...
}
}
@struts.validator | @struts.validator-var | 対応するapplication.properties(struts-blank.war添付) | |
.type | .name | .value | |
mask | mask | 正規表現 | errors.invalid={0} is invalid.Please input {1} form. |
maxlength | maxlength | 最大桁数 | errors.maxlength={0} can not be greater than {1} characters. |
minlength | minlength | 最小桁数 | errors.minlength={0} can not be less than {1} characters. |
range | max | 最大値 | errors.range={0} is not in the range {1} through {2}. |
min | 最小値 | ||
required | errors.required={0} is required. | ||
byte | errors.byte={0} must be an byte. | ||
date | errors.date={0} is not a date. | ||
double | errors.double={0} must be an double. | ||
float | errors.float={0} must be an float. | ||
integer | errors.integer={0} must be an integer. | ||
long | errors.long={0} must be an long. | ||
short | errors.short={0} must be an short. | ||
creditcard | rrors.creditcard={0} is not a valid credit card number. | ||
errors.email={0} is an invalid e-mail address. |
尚 JSPで <html:errors />タグ を使ってエラーの一覧を表示するときには、 application.properties に定義した以下の項目によって整形される。
# -- standard errors -- errors.header=<UL> errors.prefix=<LI> errors.suffix=</LI> errors.footer=</UL>
<%@ page contentType="text/html;charset=Shift_JIS %>
<%@ taglib uri=/tags/struts-html" prefix="html" %>
<html:html>
<head>
<title>...</title>
<html:javascript formName="${FORM_NAME}"/>
</head>
<body>
<html:form action="Action名" onsubmit="return validate${FORM_NAME}(this)">
...
</html:form>
</body>
</html:html>
JSP ---> LDAction --(注文)-----> Action @struts-action @struts-action path="/orderSheet" path="/order" validate="false" validate="true" --(商品詳細)-> Action @struts-action path="/merchandiseDetail" validate="false"
<?xml version="1.0" encoding="Shift_JIS" ?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation// DTD Commons Validator Rules Configuration 1.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"> <form-validation> <formset> <form name="OrderForm"> <field property="orderNo" depends="required"/> <arg0 key="label.orderNo"/> </field> <field property="amount" depends="required"/> <arg0 key="label.amount"/> </field> </form> </formset>(Actionによる検証項目の振り分け)
<?xml version="1.0" encoding="Shift_JIS" ?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation// DTD Commons Validator Rules Configuration 1.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"> <form-validation> <formset> <form name="/order"> <field property="orderNo" depends="required"/> <arg0 key="label.orderNo"/> </field> <field property="amount" depends="required"/> <arg0 key="label.amount"/> </field> </form> </formset> <formset> <form name="/merchandiseDetail"> <field property="orderNo" depends="required"/> <arg0 key="label.orderNo"/> </field> </form> </formset>