官方主页: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
AddForm.java
app.dicon
application_ja.properties
application.properties
convention.dicon
creator.dicon
customizer.dicon
env_ut.txt : ut
env.txt : ct
jdbc.dicon
log4j.properties
s2container.dicon
s2jdbc.dicon
sa.css
index.jsp
common.jsp
struts-config.xml
validator-rules.xml
web.xml
index.html
截止当前,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
- package tutorial.action;
- import javax.annotation.Resource;
- import org.seasar.struts.annotation.ActionForm;
- import org.seasar.struts.annotation.Execute;
- import tutorial.form.AddForm;
- public class AddAction {
- public Integer result;
- @ActionForm
- @Resource
- protected AddForm addForm;
- @Execute(validator = false)
- public String index() {
- return "index.jsp";
- }
- @Execute(input = "index.jsp")
- public String submit() {
- result = Integer.valueOf(addForm.arg1) + Integer.valueOf(addForm.arg2);
- return "index.jsp";
- }
- }
- package tutorial.form;
- import org.seasar.struts.annotation.IntegerType;
- import org.seasar.struts.annotation.Required;
- public class AddForm {
- @Required
- @IntegerType
- public String arg1;
- @Required
- @IntegerType
- public String arg2;
- }
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
- "http://www.seasar.org/dtd/components24.dtd">
- <components>
- <include path="convention.dicon"/>
- <include path="aop.dicon"/>
- <include path="j2ee.dicon"/>
- <!--
- <include path="s2jdbc.dicon"/>
- -->
- <component name="actionMessagesThrowsInterceptor" class="org.seasar.struts.interceptor.ActionMessagesThrowsInterceptor"/>
- </components>
- errors.header=<font color="red"><ul>
- errors.footer=</ul></font>
- errors.prefix=<li>
- errors.suffix=</li>
- errors.invalid={0}が不正です。
- errors.maxlength={0}の長さが最大値({1})を超えています。
- errors.minlength={0}の長さが最小値({1})未満です。
- errors.maxbytelength={0}のバイト長が最大値({1})を超えています。
- errors.minbytelength={0}のバイト長が最小値({1})未満です。
- errors.range={0}は{1}と{2}の間でなければいけません。
- errors.required={0}は必須です。
- errors.byte={0}はバイトでなければいけません。
- errors.date={0}は日付でなければいけません
- errors.double={0}は倍精度実数でなければいけません。
- errors.float={0}は単精度実数でなければいけません。
- errors.integer={0}は整数でなければいけません。
- errors.long={0}は長整数でなければいけません。
- errors.short={0}は短整数でなければいけません。
- errors.creditcard={0}はクレジットカード番号として不正です。
- errors.email={0}はメールアドレスとして不正です。
- errors.url={0}はURLとして不正です。
- errors.required.other={0}は{1}が入力されたときは必須です。
- errors.phone={0}は電話番号({1})として不正です。
- errors.norole=適切なロールがありません。
- errors.debug=例外のデバッグ用。
- errors.upload.size=上限が{1}バイトなのに実際は{0}バイトだったのでアップロードできませんでした。
- messages.upload.complete={0}にアップロードしました。
- #labels.arg1=引数1
- errors.header=<font color="red"><ul>
- errors.footer=</ul></font>
- errors.prefix=<li>
- errors.suffix=</li>
- 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.maxbytelength={0} can not be greater than {1} bytes.
- errors.minbytelength={0} can not be less than {1} bytes.
- errors.range={0} is not in the range {1} through {2}.
- errors.required={0} is required.
- errors.required.other={0} is required ({1}).
- 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.
- errors.url={0} is an invalid url (web address).
- errors.upload.size=Uploading failed, because actual size {0} bytes exceeded limit size {1} bytes.
- labels.name=Name
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
- "http://www.seasar.org/dtd/components24.dtd">
- <components>
- <component class="org.seasar.framework.convention.impl.NamingConventionImpl">
- <initMethod name="addRootPackageName">
- <arg>"tutorial"</arg>
- </initMethod>
- </component>
- <component class="org.seasar.framework.convention.impl.PersistenceConventionImpl"/>
- </components>
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
- "http://www.seasar.org/dtd/components24.dtd">
- <components>
- <include path="convention.dicon"/>
- <include path="customizer.dicon"/>
- <component class="org.seasar.framework.container.creator.ActionCreator"/>
- <component class="org.seasar.struts.creator.FormCreator"/>
- <component class="org.seasar.framework.container.creator.ServiceCreator"/>
- <component class="org.seasar.framework.container.creator.DtoCreator"/>
- <component class="org.seasar.framework.container.creator.InterceptorCreator"/>
- </components>
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
- "http://www.seasar.org/dtd/components24.dtd">
- <components>
- <include path="default-customizer.dicon"/>
- <component name="actionCustomizer"
- class="org.seasar.framework.container.customizer.CustomizerChain">
- <initMethod name="addAspectCustomizer">
- <arg>"aop.traceInterceptor"</arg>
- </initMethod>
- <initMethod name="addAspectCustomizer">
- <arg>"actionMessagesThrowsInterceptor"</arg>
- </initMethod>
- <initMethod name="addCustomizer">
- <arg>
- <component
- class="org.seasar.framework.container.customizer.TxAttributeCustomizer"/>
- </arg>
- </initMethod>
- <initMethod name="addCustomizer">
- <arg>
- <component
- class="org.seasar.struts.customizer.ActionCustomizer"/>
- </arg>
- </initMethod>
- </component>
- <component name="formCustomizer"
- class="org.seasar.framework.container.customizer.CustomizerChain">
- </component>
- <component name="serviceCustomizer"
- class="org.seasar.framework.container.customizer.CustomizerChain">
- <initMethod name="addAspectCustomizer">
- <arg>"aop.traceInterceptor"</arg>
- </initMethod>
- <initMethod name="addCustomizer">
- <arg>
- <component
- class="org.seasar.framework.container.customizer.TxAttributeCustomizer"/>
- </arg>
- </initMethod>
- </component>
- </components>
env.txt : ct
jdbc.dicon
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
- "http://www.seasar.org/dtd/components21.dtd">
- <components namespace="jdbc">
- <include path="jta.dicon"/>
- <!-- for HSQLDB -->
- <!--
- <component name="xaDataSource"
- class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
- <property name="driverClassName">
- "org.hsqldb.jdbcDriver"
- </property>
- <property name="URL">
- "jdbc:hsqldb:file:"
- + application.getRealPath("/WEB-INF/data")
- + "/test"
- </property>
- <property name="user">"sa"</property>
- <property name="password">""</property>
- </component>
- -->
- <!-- for H2 -->
- <!--
- <component name="xaDataSource"
- class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
- <property name="driverClassName">
- "org.h2.Driver"
- </property>
- <property name="URL">
- "jdbc:h2:file:"
- + @org.seasar.framework.util.ResourceUtil@getBuildDir(@examples.entity.JdbcManagerTest@class).getCanonicalPath()
- + "/data/demo;DB_CLOSE_ON_EXIT=FALSE"
- </property>
- <property name="user">"sa"</property>
- <property name="password"></property>
- </component>
- -->
- <!-- for Oracle -->
- <!--
- <component name="xaDataSource"
- class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
- <property name="driverClassName">
- "oracle.jdbc.driver.OracleDriver"
- </property>
- <property name="URL">
- "jdbc:oracle:thin:@xxx:1521:xxx"
- </property>
- <property name="user">"xxx"</property>
- <property name="password">"xxx"</property>
- </component>
- -->
- <!-- for DB2 -->
- <!--
- <component name="xaDataSource"
- class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
- <property name="driverClassName">
- "com.ibm.db2.jcc.DB2Driver"
- </property>
- <property name="URL">
- "jdbc:db2://foo.bar.com:50000/SAMPLE"
- </property>
- <property name="user">"db2user"</property>
- <property name="password">"db2password"</property>
- <initMethod name="addProperty">
- <arg>"currentSchema"</arg>
- <arg>"SCHEMA"</arg>
- </initMethod>
- </component>
- -->
- <!-- for PostgreSQL -->
- <!--
- <component name="xaDataSource"
- class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
- <property name="driverClassName">
- "org.postgresql.Driver"
- </property>
- <property name="URL">
- "jdbc:postgresql://localhost/TEST"
- </property>
- <property name="user">"xxxx"</property>
- <property name="password">"xxxx"</property>
- </component>
- -->
- <!-- MySQL
- - MySQL4.0以下でマルチバイト文字を扱う場合には,URL指定の後に,
- 以下の接続パラメータを追加で指定してください.
- useUnicode=true
- characterEncoding=[MySQLのエンコーディングに対応した
- Javaのエンコーディング名]
- 例:"jdbc:mysql://localhost:3306/test?useUnicode=true" +
- "&characterEncoding=Windows-31J"
- - MySQL5.0以降で,エンコーディングがeucjpmsの列を扱う場合には,
- URL指定の後に,以下の接続パラメータを追加で指定してください.
- characterEncoding=UTF-8またはWindows-31J
- characterSetResults=UTF-8またはWindows-31J
- 例:"jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8" +
- "&characterSetResults=UTF-8"
- この指定をしない場合,Java側でUCS-2⇔EUC_JP_Solarisの変換が
- 行なわれるため,ユーザー定義外字などの一部の文字が化けます.
- この指定をすることで,MySQL側でeucjpms⇔ucs2⇔utf8(cp932)の
- 変換が行なわれ,Java側でUCS-2⇔UTF-8(Windows-31J)の変換が
- 行なわれるようになります.この結果,文字化けを防げます.
- なおJIS X 0212(補助漢字)を使用する場合は,Windows-31Jではなく
- UTF-8を指定する必要があります.
- - 上記以外の場合は,my.cnfでdefault-character-setの設定を適切に
- (cp932やutf8など.デフォルトのlatin1は不可)行なっていれば,
- 文字化けは防げます.
- <component name="xaDataSource"
- class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
- <property name="driverClassName">
- "com.mysql.jdbc.Driver"
- </property>
- <property name="URL">
- "jdbc:mysql://localhost:3306/test"
- </property>
- <property name="user">"xxx"</property>
- <property name="password">"xxx"</property>
- </component>
- -->
- <!-- for SQLServer -->
- <!--
- <component name="xaDataSource"
- class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
- <property name="driverClassName">
- "net.sourceforge.jtds.jdbc.Driver"
- </property>
- <property name="URL">
- "jdbc:jtds:sqlserver://localhost/TEST;instance=SQLEXPRESS"
- </property>
- <property name="user">"xxxx"</property>
- <property name="password">"xxxx"</property>
- </component>
- -->
- <!--
- <component name="connectionPool"
- class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
- <property name="timeout">600</property>
- <property name="maxPoolSize">10</property>
- <property name="allowLocalTx">true</property>
- <destroyMethod name="close"/>
- </component>
- <component name="DataSource"
- class="org.seasar.extension.dbcp.impl.DataSourceImpl"
- />
- -->
- <!-- from JNDI -->
- <!--
- <component name="DataSource"
- class="javax.sql.DataSource">
- @org.seasar.extension.j2ee.JndiResourceLocator@lookup("java:comp/env/jdbc/DataSource")
- </component>
- -->
- <!--
- <component name="DataSource"
- class="org.seasar.extension.datasource.impl.SelectableDataSourceProxy"/>
- -->
- </components>
- log4j.category.org.seasar=DEBUG, C
- log4j.additivity.org.seasar=false
- log4j.category.tutorial=DEBUG, C
- log4j.additivity.tutorial=false
- log4j.appender.C=org.apache.log4j.ConsoleAppender
- log4j.appender.C.Target=System.out
- log4j.appender.C.ImmediateFlush=true
- log4j.appender.C.layout=org.apache.log4j.PatternLayout
- log4j.appender.C.layout.ConversionPattern=%-5p %d [%t] %m%n
- log4j.rootLogger=INFO, A1
- log4j.appender.A1=org.apache.log4j.ConsoleAppender
- log4j.appender.A1.layout=org.apache.log4j.PatternLayout
- log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
- "http://www.seasar.org/dtd/components24.dtd">
- <components>
- <include condition="#ENV == 'ut'" path="warmdeploy.dicon"/>
- <include condition="#ENV == 'ct'" path="hotdeploy.dicon"/>
- <include condition="#ENV != 'ut' and #ENV != 'ct'" path="cooldeploy.dicon"/>
- </components>
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
- "http://www.seasar.org/dtd/components24.dtd">
- <components>
- <include path="jdbc.dicon"/>
- <include path="s2jdbc-internal.dicon"/>
- <component name="jdbcManager" class="org.seasar.extension.jdbc.manager.JdbcManagerImpl">
- <property name="maxRows">0</property>
- <property name="fetchSize">0</property>
- <property name="queryTimeout">0</property>
- <property name="dialect">hsqlDialect</property>
- <!--
- <property name="dialect">db2390Dialect</property>
- <property name="dialect">db2400Dialect</property>
- <property name="dialect">db2Dialect</property>
- <property name="dialect">derbyDialect</property>
- <property name="dialect">firebirdDialect</property>
- <property name="dialect">h2Dialect</property>
- <property name="dialect">hsqlDialect</property>
- <property name="dialect">interbaseDialect</property>
- <property name="dialect">maxdbDialect</property>
- <property name="dialect">mssql2005Dialect</property>
- <property name="dialect">mssqlDialect</property>
- <property name="dialect">mysqlDialect</property>
- <property name="dialect">oracleDialect</property>
- <property name="dialect">postgreDialect</property>
- <property name="dialect">standardDialect</property>
- <property name="dialect">sybaseDialect</property>
- -->
- </component>
- </components>
- @CHARSET "utf-8";
- body { background-color: #EEEEEE; }
- h1 {
- border-left: 10px solid #308faa;
- padding-left: 156px;
- height: 33px;
- font-size: x-large;
- font-family: "Times New Roman", Times, serif;
- background-image: url("../images/seasar_banner.gif");
- background-repeat: no-repeat;
- }
- ul li { list-style: square; }
- a:hover { background-color: white; }
- input.err { background-color: orange; }
- .layout .header { background-color: orange; }
- .layout .menu { background-color: aqua; height: 300px; vertical-align: top;}
- .layout .content { background-color: white; text-align: center; }
- .layout .footer { background-color: black; color: white; }
- <%@page pageEncoding="UTF-8"%>
- <html>
- <head>
- <title>Tutorial: Add</title>
- <link rel="stylesheet" type="text/css" href="${f:url('/css/sa.css')}" />
- </head>
- <body>
- <h1>Tutorial: Add</h1>
- <html:errors/>
- <s:form>
- <html:text property="arg1"/> +
- <html:text property="arg2"/>
- = ${f:h(result)}<br />
- <input type="submit" name="submit" value="サブミット"/>
- </s:form>
- </body>
- </html>
- <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
- <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
- <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
- <%@taglib prefix="html" uri="http://struts.apache.org/tags-html"%>
- <%@taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
- <%@taglib prefix="tiles" uri="http://jakarta.apache.org/struts/tags-tiles"%>
- <%@taglib prefix="s" uri="http://sastruts.seasar.org"%>
- <%@taglib prefix="f" uri="http://sastruts.seasar.org/functions"%>
- <?xml version="1.0"?>
- <!DOCTYPE struts-config PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
- "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
- <struts-config>
- <!-- ======================================== Form Bean Definitions -->
- <form-beans>
- </form-beans>
- <!-- ================================= Global Exception Definitions -->
- <global-exceptions>
- <exception path="/WEB-INF/view/error/norole.jsp" key="errors.norole" type="org.seasar.struts.exception.NoRoleRuntimeException"/>
- </global-exceptions>
- <!-- =================================== Global Forward Definitions -->
- <global-forwards>
- </global-forwards>
- <!-- =================================== Action Mapping Definitions -->
- <action-mappings>
- </action-mappings>
- <!-- ===================================== Controller Configuration -->
- <controller
- maxFileSize="1024K"
- bufferSize="1024"
- processorClass="org.seasar.struts.action.S2RequestProcessor"
- multipartClass="org.seasar.struts.upload.S2MultipartRequestHandler"/>
- <!-- ================================ Message Resources Definitions -->
- <message-resources parameter="application"
- factory="org.seasar.struts.util.S2PropertyMessageResourcesFactory"/>
- <!-- ======================================= Plug Ins Configuration -->
- <plug-in className="org.seasar.struts.validator.S2ValidatorPlugIn">
- <set-property
- property="pathnames"
- value="/WEB-INF/validator-rules.xml"/>
- </plug-in>
- </struts-config>
- <!DOCTYPE form-validation PUBLIC
- "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
- "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
- <!--
- This file contains the default Struts Validator pluggable validator
- definitions. It should be placed somewhere under /WEB-INF and
- referenced in the struts-config.xml under the plug-in element
- for the ValidatorPlugIn.
- <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
- <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
- /WEB-INF/validation.xml"/>
- </plug-in>
- These are the default error messages associated with
- each validator defined in this file. They should be
- added to your projects ApplicationResources.properties
- file or you can associate new ones by modifying the
- pluggable validators msg attributes in this file.
- # Struts Validator Error Messages
- errors.required={0} is required.
- errors.minlength={0} can not be less than {1} characters.
- errors.maxlength={0} can not be greater than {1} characters.
- errors.invalid={0} is invalid.
- errors.byte={0} must be a byte.
- errors.short={0} must be a short.
- errors.integer={0} must be an integer.
- errors.long={0} must be a long.
- errors.float={0} must be a float.
- errors.double={0} must be a double.
- errors.date={0} is not a date.
- errors.range={0} is not in the range {1} through {2}.
- errors.creditcard={0} is an invalid credit card number.
- errors.email={0} is an invalid e-mail address.
- errors.url={0} is an invalid url (web address).
- errors.minbytelength={0} can not be less than {1} bytes.
- errors.maxbytelength={0} can not be greater than {1} bytes.
- Note: Starting in Struts 1.2.0 the default javascript definitions have
- been consolidated to commons-validator. The default can be overridden
- by supplying a <javascript> element with a CDATA section, just as
- in struts 1.1.
- -->
- <form-validation>
- <global>
- <validator name="required"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateRequired"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- msg="errors.required"/>
- <validator name="requiredif"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateRequiredIf"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- msg="errors.required"/>
- <validator name="validwhen"
- msg="errors.required"
- classname="org.apache.struts.validator.validwhen.ValidWhen"
- method="validateValidWhen"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"/>
- <validator name="minlength"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateMinLength"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.minlength"
- jsFunction="org.apache.commons.validator.javascript.validateMinLength"/>
- <validator name="maxlength"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateMaxLength"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.maxlength"
- jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/>
- <validator name="mask"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateMask"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.invalid"/>
- <validator name="byte"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateByte"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.byte"
- jsFunctionName="ByteValidations"/>
- <validator name="short"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateShort"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.short"
- jsFunctionName="ShortValidations"/>
- <validator name="integer"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateInteger"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.integer"
- jsFunctionName="IntegerValidations"/>
- <validator name="long"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateLong"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.long"/>
- <validator name="float"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateFloat"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.float"
- jsFunctionName="FloatValidations"/>
- <validator name="double"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateDouble"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.double"/>
- <validator name="date"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateDate"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.date"
- jsFunctionName="DateValidations"/>
- <validator name="intRange"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateIntRange"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends="integer"
- msg="errors.range"/>
- <validator name="floatRange"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateFloatRange"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends="float"
- msg="errors.range"/>
- <validator name="doubleRange"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateDoubleRange"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends="double"
- msg="errors.range"/>
- <validator name="creditCard"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateCreditCard"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.creditcard"/>
- <validator name="email"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateEmail"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.email"/>
- <validator name="url"
- classname="org.apache.struts.validator.FieldChecks"
- method="validateUrl"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.url"/>
- <validator name="minbytelength"
- classname="org.seasar.struts.validator.S2FieldChecks"
- method="validateMinByteLength"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.minbytelength"/>
- <validator name="maxbytelength"
- classname="org.seasar.struts.validator.S2FieldChecks"
- method="validateMaxByteLength"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends=""
- msg="errors.maxbytelength"/>
- <validator name="longRange"
- classname="org.seasar.struts.validator.S2FieldChecks"
- method="validateLongRange"
- methodParams="java.lang.Object,
- org.apache.commons.validator.ValidatorAction,
- org.apache.commons.validator.Field,
- org.apache.struts.action.ActionMessages,
- org.apache.commons.validator.Validator,
- javax.servlet.http.HttpServletRequest"
- depends="long"
- msg="errors.range"/>
- <!--
- This simply allows struts to include the validateUtilities into a page, it should
- not be used as a validation rule.
- -->
- <validator name="includeJavaScriptUtilities"
- classname=""
- method=""
- methodParams=""
- depends=""
- msg=""
- jsFunction="org.apache.commons.validator.javascript.validateUtilities"/>
- </global>
- </form-validation>
- <?xml version="1.0"?>
- <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
- version="2.4">
- <context-param>
- <param-name>sastruts.VIEW_PREFIX</param-name>
- <param-value>/WEB-INF/view</param-value>
- </context-param>
- <filter>
- <filter-name>encodingfilter</filter-name>
- <filter-class>org.seasar.extension.filter.EncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- </filter>
- <filter>
- <filter-name>requestDumpFilter</filter-name>
- <filter-class>org.seasar.extension.filter.RequestDumpFilter</filter-class>
- </filter>
- <filter>
- <filter-name>s2filter</filter-name>
- <filter-class>org.seasar.framework.container.filter.S2ContainerFilter</filter-class>
- </filter>
- <filter>
- <filter-name>hotdeployfilter</filter-name>
- <filter-class>org.seasar.framework.container.hotdeploy.HotdeployFilter</filter-class>
- </filter>
- <filter>
- <filter-name>routingfilter</filter-name>
- <filter-class>org.seasar.struts.filter.RoutingFilter</filter-class>
- <init-param>
- <param-name>jspDirectAccess</param-name>
- <param-value>false</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>encodingfilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>s2filter</filter-name>
- <url-pattern>/*</url-pattern>
- <dispatcher>REQUEST</dispatcher>
- <dispatcher>FORWARD</dispatcher>
- <dispatcher>INCLUDE</dispatcher>
- </filter-mapping>
- <filter-mapping>
- <filter-name>hotdeployfilter</filter-name>
- <url-pattern>/*</url-pattern>
- <dispatcher>REQUEST</dispatcher>
- <dispatcher>FORWARD</dispatcher>
- <dispatcher>INCLUDE</dispatcher>
- </filter-mapping>
- <filter-mapping>
- <filter-name>routingfilter</filter-name>
- <url-pattern>/*</url-pattern>
- <dispatcher>REQUEST</dispatcher>
- </filter-mapping>
- <filter-mapping>
- <filter-name>requestDumpFilter</filter-name>
- <url-pattern>*.do</url-pattern>
- <dispatcher>REQUEST</dispatcher>
- <dispatcher>FORWARD</dispatcher>
- <dispatcher>INCLUDE</dispatcher>
- </filter-mapping>
- <servlet>
- <servlet-name>action</servlet-name>
- <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
- <init-param>
- <param-name>config</param-name>
- <param-value>/WEB-INF/struts-config.xml</param-value>
- </init-param>
- <init-param>
- <param-name>configFactory</param-name>
- <param-value>org.seasar.struts.config.S2ModuleConfigFactory</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet>
- <servlet-name>s2container</servlet-name>
- <servlet-class>org.seasar.framework.container.servlet.S2ContainerServlet</servlet-class>
- <load-on-startup>2</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>action</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>s2container</servlet-name>
- <url-pattern>/s2container</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- </welcome-file-list>
- <jsp-config>
- <jsp-property-group>
- <url-pattern>*.jsp</url-pattern>
- <el-ignored>false</el-ignored>
- <page-encoding>UTF-8</page-encoding>
- <scripting-invalid>false</scripting-invalid>
- <include-prelude>/WEB-INF/view/common/common.jsp</include-prelude>
- </jsp-property-group>
- </jsp-config>
- </web-app>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>Welcome to Super Agile Struts</title>
- </head>
- <body>
- <h1>Welcome to Super Agile Struts Tutorial</h1>
- <ul>
- <li><a href="add/">ADD</a></li>
- </ul>
- </body>
- </html>