日系框架之seasar2(SAStruts)

来源:互联网 发布:同比和环比算法 编辑:程序博客网 时间:2024/04/25 08:49
官方主页:http://sastruts.seasar.org/
截止当前,SAStruts已经更新到1.0.4-sp2,下面的代码仍是1.0.4-sp1版本。
如下图所示建立工程:


需要用到的lib列表如下:
antlr.jar
aopalliance-1.0.jar
commons-beanutils-1.7.0.jar
commons-collections-3.1.jar
commons-digester-1.6.jar
commons-el-1.0.jar
commons-fileupload-1.2.jar
commons-io-1.3.2.jar
commons-logging-1.1.jar
commons-validator-1.2.0.jar
geronimo-annotation_1.0_spec-1.0.jar
geronimo-ejb_3.0_spec-1.0.jar
geronimo-interceptor_3.0_spec-1.0.jar
geronimo-jpa_3.0_spec-1.0.jar
geronimo-jta_1.1_spec-1.0-tsr.jar
geronimo-jta_1.1_spec-1.0.jar
jakarta-oro-2.0.8.jar
javassist-3.4.ga.jar
jstl-1.1.2.jar
log4j-1.2.13.jar
ognl-2.6.9-patch-20070908.jar
poi-3.0-FINAL.jar
s2-extension-2.4.28.jar
s2-framework-2.4.28.jar
s2-tiger-2.4.28.jar
sa-struts-1.0.4-sp1.jar
standard.jar
struts-1.2.9.jar

代码依次为:
AddAction.java
  1. package tutorial.action;
  2. import javax.annotation.Resource;
  3. import org.seasar.struts.annotation.ActionForm;
  4. import org.seasar.struts.annotation.Execute;
  5. import tutorial.form.AddForm;
  6. public class AddAction {
  7.     public Integer result;
  8.     @ActionForm
  9.     @Resource
  10.     protected AddForm addForm;
  11.     @Execute(validator = false)
  12.     public String index() {
  13.         return "index.jsp";
  14.     }
  15.     @Execute(input = "index.jsp")
  16.     public String submit() {
  17.         result = Integer.valueOf(addForm.arg1) + Integer.valueOf(addForm.arg2);
  18.         return "index.jsp";
  19.     }
  20. }
AddForm.java
  1. package tutorial.form;
  2. import org.seasar.struts.annotation.IntegerType;
  3. import org.seasar.struts.annotation.Required;
  4. public class AddForm {
  5.     @Required
  6.     @IntegerType
  7.     public String arg1;
  8.     @Required
  9.     @IntegerType
  10.     public String arg2;
  11. }
app.dicon
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
  3.     "http://www.seasar.org/dtd/components24.dtd">
  4. <components>
  5.     <include path="convention.dicon"/>
  6.     <include path="aop.dicon"/>
  7.     <include path="j2ee.dicon"/>
  8.     <!--
  9.     <include path="s2jdbc.dicon"/>
  10.     -->
  11.     <component name="actionMessagesThrowsInterceptor" class="org.seasar.struts.interceptor.ActionMessagesThrowsInterceptor"/>
  12. </components>
application_ja.properties
  1. errors.header=<font color="red"><ul>
  2. errors.footer=</ul></font>
  3. errors.prefix=<li>
  4. errors.suffix=</li>
  5. errors.invalid={0}が不正です。
  6. errors.maxlength={0}の長さが最大値({1})を超えています。
  7. errors.minlength={0}の長さが最小値({1})未満です。
  8. errors.maxbytelength={0}のバイト長が最大値({1})を超えています。
  9. errors.minbytelength={0}のバイト長が最小値({1})未満です。
  10. errors.range={0}は{1}と{2}の間でなければいけません。
  11. errors.required={0}は必須です。
  12. errors.byte={0}はバイトでなければいけません。
  13. errors.date={0}は日付でなければいけません
  14. errors.double={0}は倍精度実数でなければいけません。
  15. errors.float={0}は単精度実数でなければいけません。
  16. errors.integer={0}は整数でなければいけません。
  17. errors.long={0}は長整数でなければいけません。
  18. errors.short={0}は短整数でなければいけません。
  19. errors.creditcard={0}はクレジットカード番号として不正です。
  20. errors.email={0}はメールアドレスとして不正です。
  21. errors.url={0}はURLとして不正です。
  22. errors.required.other={0}は{1}が入力されたときは必須です。 
  23. errors.phone={0}は電話番号({1})として不正です。
  24. errors.norole=適切なロールがありません。
  25. errors.debug=例外のデバッグ用。
  26. errors.upload.size=上限が{1}バイトなのに実際は{0}バイトだったのでアップロードできませんでした。
  27. messages.upload.complete={0}にアップロードしました。
  28. #labels.arg1=引数1
application.properties
  1. errors.header=<font color="red"><ul>
  2. errors.footer=</ul></font>
  3. errors.prefix=<li>
  4. errors.suffix=</li>
  5. errors.invalid={0} is invalid.
  6. errors.maxlength={0} can not be greater than {1} characters.
  7. errors.minlength={0} can not be less than {1} characters.
  8. errors.maxbytelength={0} can not be greater than {1} bytes.
  9. errors.minbytelength={0} can not be less than {1} bytes.
  10. errors.range={0} is not in the range {1} through {2}.
  11. errors.required={0} is required.
  12. errors.required.other={0} is required ({1}). 
  13. errors.byte={0} must be an byte.
  14. errors.date={0} is not a date.
  15. errors.double={0} must be an double.
  16. errors.float={0} must be an float.
  17. errors.integer={0} must be an integer.
  18. errors.long={0} must be an long.
  19. errors.short={0} must be an short.
  20. errors.creditcard={0} is not a valid credit card number.
  21. errors.email={0} is an invalid e-mail address.
  22. errors.url={0} is an invalid url (web address).
  23. errors.upload.size=Uploading failed, because actual size {0} bytes exceeded limit size {1} bytes.
  24. labels.name=Name
convention.dicon
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" 
  3.     "http://www.seasar.org/dtd/components24.dtd">
  4. <components>
  5.     <component class="org.seasar.framework.convention.impl.NamingConventionImpl">
  6.         <initMethod name="addRootPackageName">
  7.             <arg>"tutorial"</arg>
  8.         </initMethod>
  9.     </component>
  10.     <component class="org.seasar.framework.convention.impl.PersistenceConventionImpl"/>
  11. </components>
creator.dicon
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" 
  3.     "http://www.seasar.org/dtd/components24.dtd">
  4. <components>
  5.     <include path="convention.dicon"/>
  6.     <include path="customizer.dicon"/>
  7.     
  8.     <component class="org.seasar.framework.container.creator.ActionCreator"/>
  9.     <component class="org.seasar.struts.creator.FormCreator"/>
  10.     <component class="org.seasar.framework.container.creator.ServiceCreator"/>
  11.     <component class="org.seasar.framework.container.creator.DtoCreator"/>
  12.     <component class="org.seasar.framework.container.creator.InterceptorCreator"/>
  13. </components>
customizer.dicon
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" 
  3.     "http://www.seasar.org/dtd/components24.dtd">
  4. <components>
  5.     <include path="default-customizer.dicon"/>
  6.     
  7.     <component name="actionCustomizer"
  8.         class="org.seasar.framework.container.customizer.CustomizerChain">
  9.         <initMethod name="addAspectCustomizer">
  10.             <arg>"aop.traceInterceptor"</arg>
  11.         </initMethod>
  12.         <initMethod name="addAspectCustomizer">
  13.             <arg>"actionMessagesThrowsInterceptor"</arg>
  14.         </initMethod>
  15.         <initMethod name="addCustomizer">
  16.             <arg>
  17.                 <component
  18.                     class="org.seasar.framework.container.customizer.TxAttributeCustomizer"/>
  19.             </arg>
  20.         </initMethod>
  21.         <initMethod name="addCustomizer">
  22.             <arg>
  23.                 <component
  24.                     class="org.seasar.struts.customizer.ActionCustomizer"/>
  25.             </arg>
  26.         </initMethod>
  27.     </component>
  28.     
  29.     <component name="formCustomizer"
  30.         class="org.seasar.framework.container.customizer.CustomizerChain">
  31.     </component>
  32.     
  33.     <component name="serviceCustomizer"
  34.         class="org.seasar.framework.container.customizer.CustomizerChain">
  35.         <initMethod name="addAspectCustomizer">
  36.             <arg>"aop.traceInterceptor"</arg>
  37.         </initMethod>
  38.         <initMethod name="addCustomizer">
  39.             <arg>
  40.                 <component
  41.                     class="org.seasar.framework.container.customizer.TxAttributeCustomizer"/>
  42.             </arg>
  43.         </initMethod>
  44.     </component>
  45. </components>
env_ut.txt : ut
env.txt    : ct
jdbc.dicon
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
  3.     "http://www.seasar.org/dtd/components21.dtd">
  4. <components namespace="jdbc">
  5.     <include path="jta.dicon"/>
  6.     <!-- for HSQLDB -->
  7.     <!--
  8.     <component name="xaDataSource"
  9.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  10.         <property name="driverClassName">
  11.             "org.hsqldb.jdbcDriver"
  12.         </property>
  13.         <property name="URL">
  14.             "jdbc:hsqldb:file:"
  15.                 + application.getRealPath("/WEB-INF/data")
  16.                 + "/test"
  17.         </property>
  18.         <property name="user">"sa"</property>
  19.         <property name="password">""</property>
  20.     </component>
  21.     -->
  22.     <!-- for H2 -->
  23.     <!--
  24.     <component name="xaDataSource"
  25.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  26.         <property name="driverClassName">
  27.             "org.h2.Driver"
  28.         </property>
  29.         <property name="URL">
  30.             "jdbc:h2:file:"
  31.                 + @org.seasar.framework.util.ResourceUtil@getBuildDir(@examples.entity.JdbcManagerTest@class).getCanonicalPath()
  32.                 + "/data/demo;DB_CLOSE_ON_EXIT=FALSE"
  33.         </property>
  34.         <property name="user">"sa"</property>
  35.         <property name="password"></property>
  36.     </component>
  37.     -->
  38.     
  39.     <!-- for Oracle -->
  40.     <!--
  41.     <component name="xaDataSource"
  42.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  43.         <property name="driverClassName">
  44.             "oracle.jdbc.driver.OracleDriver"
  45.         </property>
  46.         <property name="URL">
  47.             "jdbc:oracle:thin:@xxx:1521:xxx"
  48.         </property>
  49.         <property name="user">"xxx"</property>
  50.         <property name="password">"xxx"</property>
  51.     </component>
  52.     -->
  53.     <!-- for DB2 -->
  54.     <!--
  55.     <component name="xaDataSource"
  56.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  57.         <property name="driverClassName">
  58.             "com.ibm.db2.jcc.DB2Driver"
  59.         </property>
  60.         <property name="URL">
  61.             "jdbc:db2://foo.bar.com:50000/SAMPLE"
  62.         </property>
  63.         <property name="user">"db2user"</property>
  64.         <property name="password">"db2password"</property>
  65.         <initMethod name="addProperty">
  66.             <arg>"currentSchema"</arg>
  67.             <arg>"SCHEMA"</arg>
  68.         </initMethod>
  69.     </component>
  70.     -->
  71.     
  72.     <!-- for PostgreSQL -->
  73.     <!--
  74.     <component name="xaDataSource"
  75.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  76.         <property name="driverClassName">
  77.             "org.postgresql.Driver"
  78.         </property>
  79.         <property name="URL">
  80.           "jdbc:postgresql://localhost/TEST"
  81.         </property>
  82.         <property name="user">"xxxx"</property>
  83.         <property name="password">"xxxx"</property>
  84.     </component>
  85.     -->
  86.     <!-- MySQL
  87.     - MySQL4.0以下でマルチバイト文字を扱う場合には,URL指定の後に,
  88.         以下の接続パラメータを追加で指定してください.
  89.         useUnicode=true
  90.         characterEncoding=[MySQLのエンコーディングに対応した
  91.         Javaのエンコーディング名]
  92.         例:"jdbc:mysql://localhost:3306/test?useUnicode=true" +
  93.         "&characterEncoding=Windows-31J"
  94.         
  95.     - MySQL5.0以降で,エンコーディングがeucjpmsの列を扱う場合には,
  96.         URL指定の後に,以下の接続パラメータを追加で指定してください.
  97.         characterEncoding=UTF-8またはWindows-31J
  98.         characterSetResults=UTF-8またはWindows-31J
  99.         例:"jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8" +
  100.         "&characterSetResults=UTF-8"
  101.         この指定をしない場合,Java側でUCS-2⇔EUC_JP_Solarisの変換が
  102.         行なわれるため,ユーザー定義外字などの一部の文字が化けます.
  103.         この指定をすることで,MySQL側でeucjpms⇔ucs2⇔utf8(cp932)の
  104.         変換が行なわれ,Java側でUCS-2⇔UTF-8(Windows-31J)の変換が
  105.         行なわれるようになります.この結果,文字化けを防げます.
  106.         なおJIS X 0212(補助漢字)を使用する場合は,Windows-31Jではなく
  107.         UTF-8を指定する必要があります.
  108.         
  109.     - 上記以外の場合は,my.cnfでdefault-character-setの設定を適切に
  110.         (cp932やutf8など.デフォルトのlatin1は不可)行なっていれば,
  111.         文字化けは防げます.
  112.     <component name="xaDataSource"
  113.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  114.         <property name="driverClassName">
  115.             "com.mysql.jdbc.Driver"
  116.         </property>
  117.         <property name="URL">
  118.             "jdbc:mysql://localhost:3306/test"
  119.         </property>
  120.         <property name="user">"xxx"</property>
  121.         <property name="password">"xxx"</property>
  122.     </component>
  123.     -->
  124.     <!-- for SQLServer -->
  125.     <!--
  126.     <component name="xaDataSource"
  127.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  128.         <property name="driverClassName">
  129.             "net.sourceforge.jtds.jdbc.Driver"
  130.         </property>
  131.         <property name="URL">
  132.             "jdbc:jtds:sqlserver://localhost/TEST;instance=SQLEXPRESS"
  133.         </property>
  134.         <property name="user">"xxxx"</property>
  135.         <property name="password">"xxxx"</property>
  136.     </component>
  137.     -->
  138.     <!--
  139.     <component name="connectionPool"
  140.         class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
  141.         <property name="timeout">600</property>
  142.         <property name="maxPoolSize">10</property>
  143.         <property name="allowLocalTx">true</property>
  144.         <destroyMethod name="close"/>
  145.     </component>
  146.     <component name="DataSource"
  147.         class="org.seasar.extension.dbcp.impl.DataSourceImpl"
  148.     />
  149.     -->
  150.     <!-- from JNDI -->
  151.     <!--
  152.     <component name="DataSource"
  153.         class="javax.sql.DataSource">
  154.         @org.seasar.extension.j2ee.JndiResourceLocator@lookup("java:comp/env/jdbc/DataSource")
  155.     </component>
  156.     -->
  157.     <!--
  158.     <component name="DataSource"
  159.         class="org.seasar.extension.datasource.impl.SelectableDataSourceProxy"/>
  160.     -->
  161. </components>
log4j.properties
  1. log4j.category.org.seasar=DEBUG, C
  2. log4j.additivity.org.seasar=false
  3. log4j.category.tutorial=DEBUG, C
  4. log4j.additivity.tutorial=false
  5. log4j.appender.C=org.apache.log4j.ConsoleAppender
  6. log4j.appender.C.Target=System.out
  7. log4j.appender.C.ImmediateFlush=true
  8. log4j.appender.C.layout=org.apache.log4j.PatternLayout
  9. log4j.appender.C.layout.ConversionPattern=%-5p %d [%t] %m%n
  10. log4j.rootLogger=INFO, A1
  11. log4j.appender.A1=org.apache.log4j.ConsoleAppender
  12. log4j.appender.A1.layout=org.apache.log4j.PatternLayout
  13. log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
s2container.dicon
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" 
  3.     "http://www.seasar.org/dtd/components24.dtd">
  4. <components>
  5.     <include condition="#ENV == 'ut'" path="warmdeploy.dicon"/>
  6.     <include condition="#ENV == 'ct'" path="hotdeploy.dicon"/>
  7.     <include condition="#ENV != 'ut' and #ENV != 'ct'" path="cooldeploy.dicon"/>
  8. </components>
s2jdbc.dicon
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
  3.     "http://www.seasar.org/dtd/components24.dtd">
  4. <components>
  5.     <include path="jdbc.dicon"/>
  6.     <include path="s2jdbc-internal.dicon"/>
  7.     <component name="jdbcManager" class="org.seasar.extension.jdbc.manager.JdbcManagerImpl">
  8.         <property name="maxRows">0</property>
  9.         <property name="fetchSize">0</property>
  10.         <property name="queryTimeout">0</property>
  11.         <property name="dialect">hsqlDialect</property>
  12.         <!--
  13.         <property name="dialect">db2390Dialect</property>
  14.         <property name="dialect">db2400Dialect</property>
  15.         <property name="dialect">db2Dialect</property>
  16.         <property name="dialect">derbyDialect</property>
  17.         <property name="dialect">firebirdDialect</property>
  18.         <property name="dialect">h2Dialect</property>
  19.         <property name="dialect">hsqlDialect</property>
  20.         <property name="dialect">interbaseDialect</property>
  21.         <property name="dialect">maxdbDialect</property>
  22.         <property name="dialect">mssql2005Dialect</property>
  23.         <property name="dialect">mssqlDialect</property>
  24.         <property name="dialect">mysqlDialect</property>
  25.         <property name="dialect">oracleDialect</property>
  26.         <property name="dialect">postgreDialect</property>
  27.         <property name="dialect">standardDialect</property>
  28.         <property name="dialect">sybaseDialect</property>
  29.         -->
  30.     </component>
  31. </components>
sa.css
  1. @CHARSET "utf-8";
  2. body { background-color#EEEEEE; }
  3. h1 { 
  4.     border-left10px solid #308faa;
  5.     padding-left156px
  6.     height33px;
  7.     font-sizex-large;
  8.     font-family"Times New Roman", Times, serif;
  9.     background-imageurl("../images/seasar_banner.gif");
  10.     background-repeatno-repeat;
  11. }
  12. ul li { list-stylesquare; }
  13. a:hover { background-colorwhite; }
  14. input.err { background-color: orange; }
  15. .layout .header { background-color: orange; }
  16. .layout .menu { background-coloraquaheight300pxvertical-aligntop;}
  17. .layout .content { background-colorwhite;  text-aligncenter; }
  18. .layout .footer { background-colorblackcolorwhite; }
index.jsp
  1. <%@page pageEncoding="UTF-8"%>
  2. <html>
  3. <head>
  4. <title>Tutorial: Add</title>
  5. <link rel="stylesheet" type="text/css" href="${f:url('/css/sa.css')}" />
  6. </head>
  7. <body>
  8. <h1>Tutorial: Add</h1>
  9. <html:errors/>
  10. <s:form>
  11. <html:text property="arg1"/> +
  12. <html:text property="arg2"/>
  13. = ${f:h(result)}<br />
  14. <input type="submit" name="submit" value="サブミット"/>
  15. </s:form>
  16. </body>
  17. </html>
common.jsp
  1. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  2. <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
  3. <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
  4. <%@taglib prefix="html" uri="http://struts.apache.org/tags-html"%>  
  5. <%@taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>  
  6. <%@taglib prefix="tiles" uri="http://jakarta.apache.org/struts/tags-tiles"%>
  7. <%@taglib prefix="s" uri="http://sastruts.seasar.org"%>
  8. <%@taglib prefix="f" uri="http://sastruts.seasar.org/functions"%>
struts-config.xml
  1. <?xml version="1.0"?>
  2. <!DOCTYPE struts-config PUBLIC
  3.           "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
  4.           "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
  5. <struts-config>
  6. <!-- ======================================== Form Bean Definitions -->
  7.     <form-beans>
  8.     </form-beans>
  9. <!-- ================================= Global Exception Definitions -->
  10.     <global-exceptions>
  11.         <exception path="/WEB-INF/view/error/norole.jsp" key="errors.norole" type="org.seasar.struts.exception.NoRoleRuntimeException"/>
  12.     </global-exceptions>
  13. <!-- =================================== Global Forward Definitions -->
  14.     <global-forwards>
  15.     </global-forwards>
  16. <!-- =================================== Action Mapping Definitions -->
  17.     <action-mappings>
  18.     </action-mappings>
  19.     
  20. <!-- ===================================== Controller Configuration -->
  21.     <controller
  22.         maxFileSize="1024K"
  23.         bufferSize="1024"
  24.         processorClass="org.seasar.struts.action.S2RequestProcessor"
  25.         multipartClass="org.seasar.struts.upload.S2MultipartRequestHandler"/>
  26. <!-- ================================ Message Resources Definitions -->
  27.     <message-resources parameter="application"
  28.         factory="org.seasar.struts.util.S2PropertyMessageResourcesFactory"/>
  29. <!-- ======================================= Plug Ins Configuration -->
  30.     <plug-in className="org.seasar.struts.validator.S2ValidatorPlugIn">
  31.         <set-property
  32.           property="pathnames"
  33.           value="/WEB-INF/validator-rules.xml"/>
  34.     </plug-in>
  35. </struts-config>
validator-rules.xml
  1. <!DOCTYPE form-validation PUBLIC
  2.           "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
  3.           "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
  4. <!--
  5.    This file contains the default Struts Validator pluggable validator
  6.    definitions.  It should be placed somewhere under /WEB-INF and
  7.    referenced in the struts-config.xml under the plug-in element
  8.    for the ValidatorPlugIn.
  9.       <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  10.         <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
  11.                                                   /WEB-INF/validation.xml"/>
  12.       </plug-in>
  13.    These are the default error messages associated with
  14.    each validator defined in this file.  They should be
  15.    added to your projects ApplicationResources.properties
  16.    file or you can associate new ones by modifying the
  17.    pluggable validators msg attributes in this file.
  18.    # Struts Validator Error Messages
  19.    errors.required={0} is required.
  20.    errors.minlength={0} can not be less than {1} characters.
  21.    errors.maxlength={0} can not be greater than {1} characters.
  22.    errors.invalid={0} is invalid.
  23.    errors.byte={0} must be a byte.
  24.    errors.short={0} must be a short.
  25.    errors.integer={0} must be an integer.
  26.    errors.long={0} must be a long.
  27.    errors.float={0} must be a float.
  28.    errors.double={0} must be a double.
  29.    errors.date={0} is not a date.
  30.    errors.range={0} is not in the range {1} through {2}.
  31.    errors.creditcard={0} is an invalid credit card number.
  32.    errors.email={0} is an invalid e-mail address.
  33.    errors.url={0} is an invalid url (web address).
  34.    errors.minbytelength={0} can not be less than {1} bytes.
  35.    errors.maxbytelength={0} can not be greater than {1} bytes.
  36.    
  37.    Note: Starting in Struts 1.2.0 the default javascript definitions have
  38.          been consolidated to commons-validator. The default can be overridden
  39.          by supplying a <javascript> element with a CDATA section, just as
  40.          in struts 1.1.
  41. -->
  42. <form-validation>
  43.    <global>
  44.       <validator name="required"
  45.             classname="org.apache.struts.validator.FieldChecks"
  46.                method="validateRequired"
  47.          methodParams="java.lang.Object,
  48.                        org.apache.commons.validator.ValidatorAction,
  49.                        org.apache.commons.validator.Field,
  50.                        org.apache.struts.action.ActionMessages,
  51.                        org.apache.commons.validator.Validator,
  52.                        javax.servlet.http.HttpServletRequest"
  53.                   msg="errors.required"/>
  54.       <validator name="requiredif"
  55.                  classname="org.apache.struts.validator.FieldChecks"
  56.                  method="validateRequiredIf"
  57.                  methodParams="java.lang.Object,
  58.                                org.apache.commons.validator.ValidatorAction,
  59.                                org.apache.commons.validator.Field,
  60.                                org.apache.struts.action.ActionMessages,
  61.                                org.apache.commons.validator.Validator,
  62.                                javax.servlet.http.HttpServletRequest"
  63.                  msg="errors.required"/>
  64.       <validator name="validwhen"
  65.           msg="errors.required"
  66.                  classname="org.apache.struts.validator.validwhen.ValidWhen"
  67.                  method="validateValidWhen"
  68.                  methodParams="java.lang.Object,
  69.                        org.apache.commons.validator.ValidatorAction,
  70.                        org.apache.commons.validator.Field,
  71.                        org.apache.struts.action.ActionMessages,
  72.                        org.apache.commons.validator.Validator,
  73.                        javax.servlet.http.HttpServletRequest"/>
  74.       <validator name="minlength"
  75.             classname="org.apache.struts.validator.FieldChecks"
  76.                method="validateMinLength"
  77.          methodParams="java.lang.Object,
  78.                        org.apache.commons.validator.ValidatorAction,
  79.                        org.apache.commons.validator.Field,
  80.                        org.apache.struts.action.ActionMessages,
  81.                        org.apache.commons.validator.Validator,
  82.                        javax.servlet.http.HttpServletRequest"
  83.               depends=""
  84.                   msg="errors.minlength"
  85.            jsFunction="org.apache.commons.validator.javascript.validateMinLength"/>
  86.       <validator name="maxlength"
  87.             classname="org.apache.struts.validator.FieldChecks"
  88.                method="validateMaxLength"
  89.          methodParams="java.lang.Object,
  90.                        org.apache.commons.validator.ValidatorAction,
  91.                        org.apache.commons.validator.Field,
  92.                        org.apache.struts.action.ActionMessages,
  93.                        org.apache.commons.validator.Validator,
  94.                        javax.servlet.http.HttpServletRequest"
  95.               depends=""
  96.                   msg="errors.maxlength"
  97.            jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/>
  98.       <validator name="mask"
  99.             classname="org.apache.struts.validator.FieldChecks"
  100.                method="validateMask"
  101.          methodParams="java.lang.Object,
  102.                        org.apache.commons.validator.ValidatorAction,
  103.                        org.apache.commons.validator.Field,
  104.                        org.apache.struts.action.ActionMessages,
  105.                        org.apache.commons.validator.Validator,
  106.                        javax.servlet.http.HttpServletRequest"
  107.               depends=""
  108.                   msg="errors.invalid"/>
  109.       <validator name="byte"
  110.             classname="org.apache.struts.validator.FieldChecks"
  111.                method="validateByte"
  112.          methodParams="java.lang.Object,
  113.                        org.apache.commons.validator.ValidatorAction,
  114.                        org.apache.commons.validator.Field,
  115.                        org.apache.struts.action.ActionMessages,
  116.                        org.apache.commons.validator.Validator,
  117.                        javax.servlet.http.HttpServletRequest"
  118.               depends=""
  119.                   msg="errors.byte"
  120.        jsFunctionName="ByteValidations"/>
  121.       <validator name="short"
  122.             classname="org.apache.struts.validator.FieldChecks"
  123.                method="validateShort"
  124.          methodParams="java.lang.Object,
  125.                        org.apache.commons.validator.ValidatorAction,
  126.                        org.apache.commons.validator.Field,
  127.                        org.apache.struts.action.ActionMessages,
  128.                        org.apache.commons.validator.Validator,
  129.                        javax.servlet.http.HttpServletRequest"
  130.               depends=""
  131.                   msg="errors.short"
  132.        jsFunctionName="ShortValidations"/>
  133.       <validator name="integer"
  134.             classname="org.apache.struts.validator.FieldChecks"
  135.                method="validateInteger"
  136.          methodParams="java.lang.Object,
  137.                        org.apache.commons.validator.ValidatorAction,
  138.                        org.apache.commons.validator.Field,
  139.                        org.apache.struts.action.ActionMessages,
  140.                        org.apache.commons.validator.Validator,
  141.                        javax.servlet.http.HttpServletRequest"
  142.               depends=""
  143.                   msg="errors.integer"
  144.        jsFunctionName="IntegerValidations"/>
  145.       <validator name="long"
  146.             classname="org.apache.struts.validator.FieldChecks"
  147.                method="validateLong"
  148.          methodParams="java.lang.Object,
  149.                        org.apache.commons.validator.ValidatorAction,
  150.                        org.apache.commons.validator.Field,
  151.                        org.apache.struts.action.ActionMessages,
  152.                        org.apache.commons.validator.Validator,
  153.                        javax.servlet.http.HttpServletRequest"
  154.               depends=""
  155.                   msg="errors.long"/>
  156.       <validator name="float"
  157.             classname="org.apache.struts.validator.FieldChecks"
  158.                method="validateFloat"
  159.          methodParams="java.lang.Object,
  160.                        org.apache.commons.validator.ValidatorAction,
  161.                        org.apache.commons.validator.Field,
  162.                        org.apache.struts.action.ActionMessages,
  163.                        org.apache.commons.validator.Validator,
  164.                        javax.servlet.http.HttpServletRequest"
  165.               depends=""
  166.                   msg="errors.float"
  167.        jsFunctionName="FloatValidations"/>
  168.       <validator name="double"
  169.             classname="org.apache.struts.validator.FieldChecks"
  170.                method="validateDouble"
  171.          methodParams="java.lang.Object,
  172.                        org.apache.commons.validator.ValidatorAction,
  173.                        org.apache.commons.validator.Field,
  174.                        org.apache.struts.action.ActionMessages,
  175.                        org.apache.commons.validator.Validator,
  176.                        javax.servlet.http.HttpServletRequest"
  177.               depends=""
  178.                   msg="errors.double"/>
  179.       <validator name="date"
  180.             classname="org.apache.struts.validator.FieldChecks"
  181.                method="validateDate"
  182.          methodParams="java.lang.Object,
  183.                        org.apache.commons.validator.ValidatorAction,
  184.                        org.apache.commons.validator.Field,
  185.                        org.apache.struts.action.ActionMessages,
  186.                        org.apache.commons.validator.Validator,
  187.                        javax.servlet.http.HttpServletRequest"
  188.               depends=""
  189.                   msg="errors.date"
  190.        jsFunctionName="DateValidations"/>
  191.       <validator name="intRange"
  192.             classname="org.apache.struts.validator.FieldChecks"
  193.                method="validateIntRange"
  194.          methodParams="java.lang.Object,
  195.                        org.apache.commons.validator.ValidatorAction,
  196.                        org.apache.commons.validator.Field,
  197.                        org.apache.struts.action.ActionMessages,
  198.                        org.apache.commons.validator.Validator,
  199.                        javax.servlet.http.HttpServletRequest"
  200.               depends="integer"
  201.                   msg="errors.range"/>
  202.       <validator name="floatRange"
  203.             classname="org.apache.struts.validator.FieldChecks"
  204.                method="validateFloatRange"
  205.          methodParams="java.lang.Object,
  206.                        org.apache.commons.validator.ValidatorAction,
  207.                        org.apache.commons.validator.Field,
  208.                        org.apache.struts.action.ActionMessages,
  209.                        org.apache.commons.validator.Validator,
  210.                        javax.servlet.http.HttpServletRequest"
  211.               depends="float"
  212.                   msg="errors.range"/>
  213.       <validator name="doubleRange"
  214.             classname="org.apache.struts.validator.FieldChecks"
  215.                method="validateDoubleRange"
  216.          methodParams="java.lang.Object,
  217.                        org.apache.commons.validator.ValidatorAction,
  218.                        org.apache.commons.validator.Field,
  219.                        org.apache.struts.action.ActionMessages,
  220.                        org.apache.commons.validator.Validator,
  221.                        javax.servlet.http.HttpServletRequest"
  222.               depends="double"
  223.                   msg="errors.range"/>
  224.       <validator name="creditCard"
  225.             classname="org.apache.struts.validator.FieldChecks"
  226.                method="validateCreditCard"
  227.          methodParams="java.lang.Object,
  228.                        org.apache.commons.validator.ValidatorAction,
  229.                        org.apache.commons.validator.Field,
  230.                        org.apache.struts.action.ActionMessages,
  231.                        org.apache.commons.validator.Validator,
  232.                        javax.servlet.http.HttpServletRequest"
  233.               depends=""
  234.                   msg="errors.creditcard"/>
  235.       <validator name="email"
  236.             classname="org.apache.struts.validator.FieldChecks"
  237.                method="validateEmail"
  238.          methodParams="java.lang.Object,
  239.                        org.apache.commons.validator.ValidatorAction,
  240.                        org.apache.commons.validator.Field,
  241.                        org.apache.struts.action.ActionMessages,
  242.                        org.apache.commons.validator.Validator,
  243.                        javax.servlet.http.HttpServletRequest"
  244.               depends=""
  245.                   msg="errors.email"/>
  246.       <validator name="url"
  247.             classname="org.apache.struts.validator.FieldChecks"
  248.                method="validateUrl"
  249.          methodParams="java.lang.Object,
  250.                        org.apache.commons.validator.ValidatorAction,
  251.                        org.apache.commons.validator.Field,
  252.                        org.apache.struts.action.ActionMessages,
  253.                        org.apache.commons.validator.Validator,
  254.                        javax.servlet.http.HttpServletRequest"
  255.               depends=""
  256.                   msg="errors.url"/>
  257.       <validator name="minbytelength"
  258.             classname="org.seasar.struts.validator.S2FieldChecks"
  259.                method="validateMinByteLength"
  260.          methodParams="java.lang.Object,
  261.                        org.apache.commons.validator.ValidatorAction,
  262.                        org.apache.commons.validator.Field,
  263.                        org.apache.struts.action.ActionMessages,
  264.                        org.apache.commons.validator.Validator,
  265.                        javax.servlet.http.HttpServletRequest"
  266.               depends=""
  267.                   msg="errors.minbytelength"/>
  268.       <validator name="maxbytelength"
  269.             classname="org.seasar.struts.validator.S2FieldChecks"
  270.                method="validateMaxByteLength"
  271.          methodParams="java.lang.Object,
  272.                        org.apache.commons.validator.ValidatorAction,
  273.                        org.apache.commons.validator.Field,
  274.                        org.apache.struts.action.ActionMessages,
  275.                        org.apache.commons.validator.Validator,
  276.                        javax.servlet.http.HttpServletRequest"
  277.               depends=""
  278.                   msg="errors.maxbytelength"/>
  279.                   
  280.      <validator name="longRange"
  281.             classname="org.seasar.struts.validator.S2FieldChecks"
  282.                method="validateLongRange"
  283.          methodParams="java.lang.Object,
  284.                        org.apache.commons.validator.ValidatorAction,
  285.                        org.apache.commons.validator.Field,
  286.                        org.apache.struts.action.ActionMessages,
  287.                        org.apache.commons.validator.Validator,
  288.                        javax.servlet.http.HttpServletRequest"
  289.               depends="long"
  290.                   msg="errors.range"/>
  291.      <!--
  292.        This simply allows struts to include the validateUtilities into a page, it should
  293.        not be used as a validation rule.
  294.      -->
  295.      <validator name="includeJavaScriptUtilities"
  296.             classname=""
  297.                method=""
  298.          methodParams=""
  299.               depends=""
  300.                   msg=""
  301.            jsFunction="org.apache.commons.validator.javascript.validateUtilities"/>
  302.    </global>
  303. </form-validation>
web.xml
  1. <?xml version="1.0"?>
  2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  5. version="2.4">
  6.     <context-param>
  7.         <param-name>sastruts.VIEW_PREFIX</param-name>
  8.         <param-value>/WEB-INF/view</param-value>
  9.     </context-param>
  10.     <filter>
  11.         <filter-name>encodingfilter</filter-name>
  12.         <filter-class>org.seasar.extension.filter.EncodingFilter</filter-class>
  13.         <init-param>
  14.             <param-name>encoding</param-name>
  15.             <param-value>UTF-8</param-value>
  16.         </init-param>
  17.     </filter>
  18.     
  19.     <filter>
  20.         <filter-name>requestDumpFilter</filter-name>
  21.         <filter-class>org.seasar.extension.filter.RequestDumpFilter</filter-class>
  22.     </filter>
  23.     <filter>
  24.         <filter-name>s2filter</filter-name>
  25.         <filter-class>org.seasar.framework.container.filter.S2ContainerFilter</filter-class>
  26.     </filter>
  27.     <filter>
  28.         <filter-name>hotdeployfilter</filter-name>
  29.         <filter-class>org.seasar.framework.container.hotdeploy.HotdeployFilter</filter-class>
  30.     </filter>
  31.     <filter>
  32.         <filter-name>routingfilter</filter-name>
  33.         <filter-class>org.seasar.struts.filter.RoutingFilter</filter-class>
  34.         <init-param>
  35.             <param-name>jspDirectAccess</param-name>
  36.             <param-value>false</param-value>
  37.         </init-param>
  38.     </filter>
  39.         
  40.     <filter-mapping>
  41.         <filter-name>encodingfilter</filter-name>
  42.         <url-pattern>/*</url-pattern>
  43.     </filter-mapping>
  44.     
  45.     <filter-mapping>
  46.         <filter-name>s2filter</filter-name>
  47.         <url-pattern>/*</url-pattern>
  48.         <dispatcher>REQUEST</dispatcher>
  49.         <dispatcher>FORWARD</dispatcher>
  50.         <dispatcher>INCLUDE</dispatcher>
  51.     </filter-mapping>
  52.     <filter-mapping>
  53.         <filter-name>hotdeployfilter</filter-name>
  54.         <url-pattern>/*</url-pattern>
  55.         <dispatcher>REQUEST</dispatcher>
  56.         <dispatcher>FORWARD</dispatcher>
  57.         <dispatcher>INCLUDE</dispatcher>
  58.     </filter-mapping>
  59.     
  60.     <filter-mapping>
  61.         <filter-name>routingfilter</filter-name>
  62.         <url-pattern>/*</url-pattern>
  63.         <dispatcher>REQUEST</dispatcher>
  64.     </filter-mapping>
  65.     
  66.     <filter-mapping>
  67.         <filter-name>requestDumpFilter</filter-name>
  68.         <url-pattern>*.do</url-pattern>
  69.         <dispatcher>REQUEST</dispatcher>
  70.         <dispatcher>FORWARD</dispatcher>
  71.         <dispatcher>INCLUDE</dispatcher>
  72.     </filter-mapping>
  73.     
  74.     <servlet>
  75.         <servlet-name>action</servlet-name>
  76.         <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  77.         <init-param>
  78.             <param-name>config</param-name>
  79.             <param-value>/WEB-INF/struts-config.xml</param-value>
  80.         </init-param>
  81.         <init-param>
  82.             <param-name>configFactory</param-name>
  83.             <param-value>org.seasar.struts.config.S2ModuleConfigFactory</param-value>
  84.         </init-param>
  85.         <load-on-startup>1</load-on-startup>
  86.     </servlet>
  87.     
  88.     <servlet>
  89.         <servlet-name>s2container</servlet-name>
  90.         <servlet-class>org.seasar.framework.container.servlet.S2ContainerServlet</servlet-class>
  91.         <load-on-startup>2</load-on-startup>
  92.     </servlet>
  93.     
  94.     <servlet-mapping>
  95.         <servlet-name>action</servlet-name>
  96.         <url-pattern>*.do</url-pattern>
  97.     </servlet-mapping>
  98.     <servlet-mapping>
  99.         <servlet-name>s2container</servlet-name>
  100.         <url-pattern>/s2container</url-pattern>
  101.     </servlet-mapping>
  102.     <welcome-file-list>
  103.         <welcome-file>index.html</welcome-file>
  104.     </welcome-file-list>
  105.     
  106.     <jsp-config>
  107.         <jsp-property-group>
  108.             <url-pattern>*.jsp</url-pattern>
  109.             <el-ignored>false</el-ignored>
  110.             <page-encoding>UTF-8</page-encoding>
  111.             <scripting-invalid>false</scripting-invalid>
  112.             <include-prelude>/WEB-INF/view/common/common.jsp</include-prelude>
  113.         </jsp-property-group>
  114.     </jsp-config>
  115. </web-app>
index.html
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4. <title>Welcome to Super Agile Struts</title>
  5. </head>
  6. <body>
  7. <h1>Welcome to Super Agile Struts Tutorial</h1>
  8. <ul>
  9. <li><a href="add/">ADD</a></li>
  10. </ul>
  11. </body>
  12. </html>
原创粉丝点击