Strutsで遊ぶ4  DynaValidatorForm

トップ 戻る

Strutsで遊ぶ3の続き。
前回の myworks-struts02 をコピーして myworks-struts03 とする。
ソースも一通り載せておく。変更部分は赤字。

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">
                <msg name="required" key="errors.msg1.required"/>
            </field>
            
            <field property="msg2" depends="integer">
                <arg0 key="MESSAGE2" resource="false"/>
            </field>
            
            <field property="msg3" depends="maxlength">
                <arg0 key="MESSAGE III" resource="false"/>
                <arg1 key="8" resource="false"/>
                <var>
                    <var-name>maxlength</var-name>
                    <var-value>8</var-value>
                </var>
            </field>
            
        </form>
        
    </formset>

/WEB-INF/src/java/resources/application.properties
# -- standard errors --
errors.header=<UL>
errors.prefix=<LI>
errors.suffix=</LI>
errors.footer=</UL>
# -- validator --
errors.invalid={0} is invalid.
errors.maxlength={0} can not be greater than {1} characters.
errors.minlength={0} can not be less than {1} characters.
errors.range={0} is not in the range {1} through {2}.
errors.required={0} is required.
errors.byte={0} must be an byte.
errors.date={0} is not a date.
errors.double={0} must be an double.
errors.float={0} must be an float.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.short={0} must be an short.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid e-mail address.
# -- other --
errors.cancel=Operation cancelled.
errors.detail={0}
errors.general=The process did not complete. Details should follow.
errors.token=Request could not be completed. Operation is not in sequence.
# -- welcome --
welcome.title=Struts Blank Application
welcome.heading=Welcome!
welcome.message=To get started on your own application, 〜省略〜


# -- mytest --
errors.msg1.required=メッセージ1は必須入力です。

日本語はこのままではJavaが認識できないのでコードに変換する。
DOSプロンプトでnative2asciiコマンドを実行する。


 native2ascii 変換前ファイル名 変換後ファイル名


変換後は↓のようになります。

/WEB-INF/classes/resources/application.properties  ←変換したらここに置く
# -- mytest --
errors.msg1.required
    =\u30e1\u30c3\u30bb\u30fc\u30b8\uff11\u306f\u5fc5\u9808\u5165\u529b\u3067\u3059\u3002
※↑1行に収まらなかったので改行してある
ちなみにこのメッセージリソースファイルを使いますよ、という定義はstruts-config.xmlに書いてある。
ディレクトリの構成はStrutsのお決まりか、Tomcatの設定ファイルか・・・。


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

結果



こんな感じ。
いろいろ説明不足だが、もう遅いのでここまで。



トップ    戻る

Copyright© 2002-2004 Kasaharan All rights reserved