Strutsで遊ぶ3  DynaValidatorForm

トップ 戻る

今回は DynaValidatorForm を使って遊んでみる。
これは簡単に言えば前回の DynaActionFormと ValidatorForm を足したものである。
ちなみにValidatorFormで遊んでいないが、これは xmlの設定ファイルで入力データの検証チェックが行えるものである。
DynaActionForm を使い始めると普通に ActionForm を作るのが面倒なのでとばしてしまった。

では使ってみる。前回の myworks-struts01 をコピーして myworks-struts02 とする。
一応、一通りソースを載せておくが、変更箇所は赤字の部分のみである。(このHTML自体もコピーだったりする。)

input.jsp
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>

<html:html locale="true">
<body>


<html:form action="/pages/actionName">
  <html:text property="msg1" />
  <html:text property="msg2" />
  <html:text property="msg3" />
  <html:submit property="submit" value="送信"/>
</html:form>


<html:errors property="msg1" />
<html:errors property="msg2" />
<html:errors property="msg3" />


</body>
</html:html>

output.jsp
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>

<html:html locale="true">
<body>


<bean:write name="actionFormName" property="msg1" scope="request"/>
<bean:write name="actionFormName" property="msg2" scope="request"/>
<bean:write name="actionFormName" property="msg3" scope="request"/>


</body>
</html:html>

TestAction.java
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;

public class TestAction extends Action {

  public ActionForward execute(ActionMapping mapping,
                               ActionForm form,
                               HttpServletRequest request,
                               HttpServletResponse response) {


    return (mapping.findForward("forwardname"));
  }

}

struts-config.xml 必要な記述のみ
    <form-beans>

        <form-bean name="actionFormName" type="org.apache.struts.validator.DynaValidatorForm">
            <form-property name="msg1" type="java.lang.String"/>
            <form-property name="msg2" type="java.lang.String"/>
            <form-property name="msg3" type="java.lang.String"/>
        </form-bean>

    </form-beans>
    

    
    <action-mappings>    
    
        <action
            path="/pages/actionName"
            type="TestAction"
            name="actionFormName"
            scope="request"
            input="/pages/input.jsp"
            validate="true">
            <forward name="forwardname" path="/pages/output.jsp"/>
        </action>
        
    </action-mappings>

validation.xml 変更を加えた記述のみ
    <formset>
    
    
        <form name="actionFormName">
            <field property="msg1" depends="required"/>

            <field property="msg2" depends="integer"/>
            
            <field property="msg3" depends="maxlength">
            <var>
                <var-name>maxlength</var-name>
                <var-value>8</var-value>
            </var>
            </field>   
        </form>


    </formset>

私のマシンでのディレクトリ構成。
...\jakarta-tomcat-4.1.29\webapps\myworks-struts02 \pages \input.jsp  
    \output.jsp  
  \WEB-INF \classes \TestAction.class
    \struts-config.xml  
    \validator.xml  

コンパイル時に使っているバッチファイル (j.bat)
set CATALINA_HOME=C:\myfolder\program\tomcat\jakarta-tomcat-4.1.29
set JAVA_HOME=C:\jdk1.3.1_09
set CLASSPATH=%CATALINA_HOME%\common\lib\servlet.jar
;%CATALINA_HOME%\webapps\myworks-struts\WEB-INF\lib\struts.jar
PATH C:\myFolder\tomcat\jakarta-tomcat-4.1.29\bin;C:\jdk1.3.1_09\bin

結果


あ・・・。メッセージの事忘れてた。
この null のところには引数が表示されるわけだが、指定していなかったので null と出てしまった。
ここを
必須入力です。
AAAは数値(integer)ではありません。
1234567890は8文字を超えています。
と表示するようにする。 validation.xmlに引数の記述と、application.propertiesの変更を行えばよいのだが、今日はここまで。



トップ    戻る

Copyright© 2002-2003 Kasaharan All rights reserved