■ネストのルートとなるBeanを指定

<nested:root name="ルートとなるBean名"/>


■ネストレベルを設定

<nested:nest property="ネストレベルに設定するプロパティ名"/>


■ネストレベルを出力or変数として定義

<nested:writeNesting

   property="ネストレベルを出力するプロパティ名、設定しなければこのタグ自体のネスとレベルを出力"

   id="ネストレベルを変数として定義する時の変数名、これが設定された場合ネストレベルはString型の変数として定義される"

   filter="true→HTMLセンシティブな文字列をエスケープ変換する false→エスケープ変換しない"

/>


■nestedでも使える

□struts-beanタグ

define

message

size

write

□struts-htmlタグ

checkbox

errors

file

form

hidden

image

img

link

messages

multibox

options

optionsCollection

password

radio

select

submit

text

textarea

□struts-logicタグ

empty

equal

greaterEqual

greaterThan

iterate

lessEqual

lessThan

match

messegesNotPresent

messagesPresent

notEmpty

notEqual

notMatch

notPresent

present


■ここに置く

アプリケーションルートフォルダ/WEB-INF/struts-nested.tld


■web.xmlに書く

</web-app>

・・・中略・・・


 <taglib>
 <taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
 <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
 </taglib>


・・・中略・・・

</web-app>


■jspに書く

<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>

4)検証ルールの詳細を定めた設定ファイル validation.xml(Strutsの標準検証ルール設定ファイル) と validator-rules.xml(自分で作る検証ルール) を用意


<form>タグはvalidatorによってチェックを行うActionForm毎に定義


<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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="loginForm"> struts-config.xmlに設定したアクションフォームBeanの名前
<field property="name" depends="required"> アクションフォームBeanのプロパティ名 適用する検証ルールの名前
<msg name="required" key="name.invalidate" />
</field>
</form>
</formset>
</form-validation>

3)アクションフォームBeanをvalidator機能を使えるようにする。

  validateメソッドはオーバーライド(実装)しないこと!


例:ユーザーIDとパスワードを入力するログイン画面用のアクションフォームBean




package sample;

import org.apache.struts.validator.ValidatorForm;


public class LoginForm extends ValidatorForm{

 /**ユーザーID**/

private String userid;

 /**パスワード**/

private String password;

 /**アクセッサメソッド**/

 public String getUserid(){ return userid;}

public void setUserid(String userid){ this.userid = userid;}
public String getPassword(){ return password;}

public void setPassword(String password){ this.password = password;}


//**validateメソッドはオーバーライド(実装)しないこと、だから赤文字の部分は不要

public ActionErrors validate(ActionMapping mapping, HttpServletRequest req){

ActionErrors errors = new ActionErrors();

if((userid == null) || (userid.length() < 1)){
errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage("error.userid"));
}

if((password == null) || (password.length()<=0)){
errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage("error.password"));
}

return errors;
}

**/

}




1)validator機能をつかうには commons-validator.jar が必要。commons-validator.jarをWEB-INF/libに配置する。


2)struts-config.xml の一番した辺りに org.apache.struts.validator.ValidatorPlugIn の設定を追記する。


</struts-config>

・・・中略・・・


<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,

         /WEB-INF/validation.xml"/>
</plug-in>

</struts-config>