日系框架之seasar2(S2Struts)

来源:互联网 发布:python 字典的嵌套 编辑:程序博客网 时间:2024/04/20 07:17

官方主页:http://s2struts.seasar.org/ja/ ,目前v1.3版本也在开发中。

对比SAStruts(http://blog.csdn.net/kunshan_shenbin/archive/2008/11/04/3220007.aspx),使用Html模板引擎Mayaa(http://mayaa.seasar.org/)是它的优点。

如下图所示建立工程结构:

所使用的lib包列表如下:

aopalliance-1.0.jar
commons-beanutils-1.7.0.jar
commons-digester-1.6.jar
commons-fileupload-1.0.jar
commons-logging-1.0.4.jar
commons-validator-1.1.4.jar
hsqldb.jar
javassist-3.0.jar
jaxen-1.1-beta-9.jar
jta.jar
log4j-1.2.8.jar
mayaa-1.0.7.jar
nekohtml-0.9.5.jar
ognl-2.6.5.jar
oro-2.0.8.jar
rhino-1.6r2.jar
s2-dao-1.0.47.jar
s2-extension-2.3.23.jar
s2-framework-2.3.23.jar
s2-struts-1.2.12.jar
s2-struts-tiger-1.2.12.jar
struts-1.2.9.jar
xercesImpl-2.7.1.jar
xml-apis-1.3.jar

 

代码依次如下所示:

AddAction.java

  1. package org.seasar.struts.examples.add;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpServletResponse;
  4. import org.apache.struts.action.Action;
  5. import org.apache.struts.action.ActionForm;
  6. import org.apache.struts.action.ActionForward;
  7. import org.apache.struts.action.ActionMapping;
  8. import org.seasar.struts.examples.form.CalculationForm;
  9. public class AddAction extends Action {
  10.     @Override
  11.     public ActionForward execute(
  12.         ActionMapping mapping,
  13.         ActionForm form,
  14.         HttpServletRequest request,
  15.         HttpServletResponse response) {
  16.         CalculationForm calForm = (CalculationForm) form;
  17.         int result = addService_.add(calForm.getArg1(), calForm.getArg2());
  18.         calForm.setResult(result);
  19.         return (mapping.findForward("success"));
  20.     }
  21.     private AddService addService_;
  22.     public AddAction(AddService addService) {
  23.         addService_ = addService;
  24.         System.out.println("created new AddAction");
  25.     }
  26. }

AddService.java

  1. package org.seasar.struts.examples.add;
  2. public interface AddService {
  3.     public int add(int arg1, int arg2);
  4. }

AddServiceImpl.java

  1. package org.seasar.struts.examples.add;
  2. public class AddServiceImpl implements AddService {
  3.     public int add(int arg1, int arg2) {
  4.         return arg1 + arg2;
  5.     }
  6. }

Add.dicon

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
  3.     "http://www.seasar.org/dtd/components21.dtd">
  4. <components>
  5.     <component class="org.seasar.struts.examples.add.AddServiceImpl"/>
  6. </components>

RequestProcessor.dicon

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
  3.     "http://www.seasar.org/dtd/components21.dtd">
  4. <components>
  5.     <include path="s2struts.dicon"/>
  6.     <component class="org.seasar.struts.processor.S2RequestProcessor" instance="prototype">
  7.         <aspect pointcut="process">
  8.             <component class="org.seasar.struts.examples.interceptor.MeasureTimeInterceptor"/>
  9.         </aspect>
  10.         <aspect pointcut="processActionForm">
  11.             <component class="org.seasar.struts.interceptors.ProcessPojoFormInterceptor"/>
  12.         </aspect>
  13.     </component>
  14. </components>

CalculationForm.java

  1. package org.seasar.struts.examples.form;
  2. import org.apache.struts.action.ActionForm;
  3. public class CalculationForm extends ActionForm {
  4.     private static final long serialVersionUID = 7914771274544612470L;
  5.     private int arg1_;
  6.     private int arg2_;
  7.     private int result_;
  8.     public CalculationForm() {
  9.     }
  10.     public int getArg1() {
  11.         return arg1_;
  12.     }
  13.     public void setArg1(int arg1) {
  14.         arg1_ = arg1;
  15.     }
  16.     public int getArg2() {
  17.         return arg2_;
  18.     }
  19.     public void setArg2(int arg2) {
  20.         arg2_ = arg2;
  21.     }
  22.     public int getResult() {
  23.         return result_;
  24.     }
  25.     public void setResult(int result) {
  26.         result_ = result;
  27.     }
  28.     
  29.     @Override
  30.     public String toString() {
  31.         return "arg1=" + arg1_ + " arg2=" + arg2_ + " result=" + result_;
  32.     }
  33. }
MeasureTimeInterceptor.java

 

  1. package org.seasar.struts.examples.interceptor;
  2. import java.util.Date;
  3. import javax.servlet.http.HttpServletRequest;
  4. import org.aopalliance.intercept.MethodInterceptor;
  5. import org.aopalliance.intercept.MethodInvocation;
  6. public class MeasureTimeInterceptor implements MethodInterceptor {
  7.     
  8.     public Object invoke(MethodInvocation invocation) throws Throwable {
  9.         Date start = new Date();
  10.         
  11.         Object ret = invocation.proceed();
  12.         
  13.         Object[] args = invocation.getArguments();
  14.         HttpServletRequest request = (HttpServletRequest)args[0];
  15.         String message = request.getServletPath() + " : Time = "
  16.                 + (new Date().getTime() - start.getTime()+ " milliseconds");
  17.         System.out.println(message);
  18.         return ret;
  19.     }
  20. }

aop.dicon

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
  3. "http://www.seasar.org/dtd/components.dtd">
  4. <components namespace="aop">
  5.     <component name="traceInterceptor"
  6.         class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>
  7.     <component name="traceThrowsInterceptor"
  8.         class="org.seasar.framework.aop.interceptors.TraceThrowsInterceptor"/>
  9. </components>

app.dicon

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
  3.     "http://www.seasar.org/dtd/components21.dtd">
  4. <components>
  5.     <include path="org/seasar/struts/examples/dicon/RequestProcessor.dicon"/>
  6.     <include path="s2struts.dicon"/>
  7.     <include path="org/seasar/struts/examples/dicon/Add.dicon"/>
  8. </components>

application.properties资源文件,可根据实际情况修改。

  1. # -- standard errors --
  2. errors.header=<UL>
  3. errors.prefix=<LI>
  4. errors.suffix=</LI>
  5. errors.footer=</UL>
  6. # -- validator --
  7. errors.invalid={0} is invalid.
  8. errors.maxlength={0} can not be greater than {1} characters.
  9. errors.minlength={0} can not be less than {1} characters.
  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.minbytelength={0} can not be less than {1} bytes.
  24. errors.maxbytelength={0} can not be greater than {1} bytes.
  25. # -- other --
  26. errors.cancel=Operation cancelled.
  27. errors.detail={0}
  28. errors.general=The process did not complete. Details should follow.
  29. errors.token=Request could not be completed. Operation is not in sequence.
  30. # -- business --
  31. errors.bad.criteria=Corresponding data to the retrieval condition is not found
  32. errors.employee.exist=Employee({0}) already exist
  33. # -- exception --
  34. errors.global.runtime=System error.
  35. errors.global.runtime.sql=You need to run WEB-INF/bin/runHsqldb.bat.
  36. ######
  37. # -- other --
  38. #
  39. #
  40. # -- welcome --
  41. #
  42. welcome.title=Struts Blank Application
  43. welcome.heading=Welcome!
  44. welcome.message=To get started on your own application, copy the struts-blank.war to a new WAR file using the name for your application. Place it in your container's "webapp" folder (or equivalent), and let your container auto-deploy the application. Edit the skeleton configuration files as needed, restart your container, and you are on your way! (You can find the application.properties file with this message in the /WEB-INF/src/java/resources folder.)
  45. sample.title=S2Struts Sample Calculate Application
  46. mod.title=S2Struts Mod Application
  47. add.title=S2Struts Add Application
  48. subtract.title=S2Struts Subtract Application
  49. multiply.title=S2Struts Multiply Application
  50. divide.title=S2Struts Divide Application
  51. echo.title=S2Struts Echo Application
  52. changeCase.title=S2Struts ChangeCase Application
  53. calc=calculate
  54. result.title=S2Struts Application Result
  55. resultresult=result
  56. echoecho=echo
  57. toUpperCasetoUpperCase=toUpperCase
  58. toLowerCasetoLowerCase=toLowerCase
  59. system.back=back
  60. system.error=error
  61. #
  62. form.mod.arg1=ARG1
  63. form.mod.arg2=ARG2
  64. message.title=Message Example
  65. examplemessage=ExampleMessage. {0} {1} {2} {3}
  66. validate.title=Validate Example
  67. validatevalidate=validate
  68. validate.required=RequiredValue
  69. validate.required.other=RequiredOtherMessageValue
  70. mustendcom={0} must end 'com'
  71. uploadupload=upload
  72. upload.title=Upload Example
  73. downloaddownload=download
  74. download.title=Download Example
  75. indexedindexed=indexed
  76. indexed.title=Indexed Example
  77. iterationiteration=iteration
  78. iteration.title=Iteration Example
  79. iteration.title.list=Iteration Example - List
  80. iteration.title.create=Iteration Example - Create
  81. iteration.title.edit=Iteration Example - Edit
  82. iteration.title.delete=Iteration Example - Delete
  83. ######
  84. # -- employee --
  85. #
  86. #
  87. # -- title --
  88. #
  89. title.error=ERROR
  90. title.employee=Employee Management
  91. title.employee.search=Search
  92. title.employee.list=List
  93. title.employee.create=Create
  94. title.employee.update=Edit
  95. title.employee.delete=Delete
  96. title.employee.inquire=Inquire
  97. #
  98. # -- button --
  99. #
  100. button.prev=previous
  101. button.next=next
  102. button.create=create
  103. button.search=search
  104. button.edit=edit
  105. button.delete=delete
  106. button.inquire=inquire
  107. button.confirm=confirm
  108. button.store=store
  109. button.back=back
  110. #
  111. # -- form --
  112. #
  113. form.detail=Detail
  114. #
  115. form.employee=Employee
  116. form.employee.no=EmployeeNo
  117. form.employee.name=EmployeeName
  118. form.employee.job=Job
  119. form.employee.manager=Manager
  120. form.employee.hiredate=HireDate
  121. form.employee.salary=Salary
  122. form.employee.commission=Commission
  123. #
  124. form.department=Department
  125. #
  126. #
  127. #
  128. messages.select.space=Please select

j2ee.dicon

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
  3. "http://www.seasar.org/dtd/components.dtd">
  4. <components namespace="j2ee">
  5.     <component name="transactionManager"
  6.         class="org.seasar.extension.jta.TransactionManagerImpl"/>
  7.     <component name="requiredTx"
  8.         class="org.seasar.extension.tx.RequiredInterceptor"/>
  9.     <component name="requiresNewTx"
  10.         class="org.seasar.extension.tx.RequiresNewInterceptor"/>
  11.     <component name="mandatoryTx"
  12.         class="org.seasar.extension.tx.MandatoryInterceptor"/>
  13.     <component name="notSupportedTx"
  14.         class="org.seasar.extension.tx.NotSupportedInterceptor"/>
  15.     <component class="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/>
  16.     <component class="org.seasar.extension.jdbc.impl.BasicStatementFactory"/>
  17.     <!--
  18.     <component class="org.seasar.extension.jdbc.impl.OracleResultSetFactory"/>
  19.     <component class="org.seasar.extension.jdbc.impl.BooleanToIntStatementFactory"/>
  20.     -->
  21.     <!--
  22.     <component name="xaDataSource"
  23.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  24.         <property name="driverClassName">
  25.             "oracle.jdbc.driver.OracleDriver"
  26.         </property>
  27.         <property name="URL">
  28.             "jdbc:oracle:thin:@xxx:xxx:xxx"
  29.         </property>
  30.         <property name="user">"xxx"</property>
  31.         <property name="password">"xxx"</property>
  32.     </component>
  33.     <component name="xaDataSource"
  34.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  35.         <property name="driverClassName">
  36.             "org.postgresql.Driver"
  37.         </property>
  38.         <property name="URL">
  39.           "jdbc:postgresql://localhost/TEST"
  40.         </property>
  41.         <property name="user">"xxxx"</property>
  42.         <property name="password">"xxxx"</property>
  43.     </component>
  44.     <component name="xaDataSource"
  45.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  46.         <property name="driverClassName">
  47.             "net.sourceforge.jtds.jdbc.Driver"
  48.         </property>
  49.         <property name="URL">
  50.             "jdbc:jtds:sqlserver://localhost/TEST;instance=SQLEXPRESS"
  51.         </property>
  52.         <property name="user">"xxxx"</property>
  53.         <property name="password">"xxxx"</property>
  54.     </component>
  55.     -->
  56.     
  57.     <component name="xaDataSource"
  58.         class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  59.         <property name="driverClassName">
  60.             "org.hsqldb.jdbcDriver"
  61.         </property>
  62.         <property name="URL">
  63.             "jdbc:hsqldb:hsql://localhost:9001"
  64.         </property>
  65.         <property name="user">"sa"</property>
  66.         <property name="password">""</property>
  67.     </component>
  68.     <component name="connectionPool"
  69.         class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
  70.         <property name="timeout">600</property>
  71.         <property name="maxPoolSize">10</property>
  72.         <!-- JTAトランザクションが開始されていない場合にコネクションを
  73.              取得できないようにするには次のプロパティをfalseにしてください.-->
  74.         <property name="allowLocalTx">true</property>
  75.         <destroyMethod name="close"/>
  76.     </component>
  77.     <component name="dataSource"
  78.         class="org.seasar.extension.dbcp.impl.DataSourceImpl"/>
  79.     
  80.     <!-- WebLogic
  81.     <component name="initialContext" class="javax.naming.InitialContext"/>
  82.     <component name="transactionManager"
  83.         class="org.seasar.extension.j2ee.JndiTransactionManager">
  84.         <arg>initialContext</arg>
  85.         <arg>"javax.transaction.TransactionManager"</arg>
  86.     </component>
  87.     <component
  88.         class="org.seasar.extension.j2ee.JndiDataSource">
  89.         <arg>initialContext</arg>
  90.         <arg>"jndiName"</arg>
  91.     </component>
  92.     -->
  93.     
  94.     <!-- WebSphere 4
  95.     <component name="initialContext" class="javax.naming.InitialContext"/>
  96.     <component name="transactionManager"
  97.         class="org.seasar.extension.j2ee.SingletonTransactionManager">
  98.         <arg>"com.ibm.ejs.jts.jta.JTSXA"</arg>
  99.         <arg>"getTransactionManager"</arg>
  100.     </component>
  101.     <component
  102.         class="org.seasar.extension.j2ee.JndiDataSource">
  103.         <arg>initialContext</arg>
  104.         <arg>"jndiName"</arg>
  105.     </component>
  106.     -->
  107.     
  108.     <!-- WebSphere 5
  109.     <component name="initialContext" class="javax.naming.InitialContext"/>
  110.     <component name="transactionManager"
  111.         class="org.seasar.extension.j2ee.SingletonTransactionManager">
  112.         <arg>"com.ibm.ejs.jts.jta.TransactionManagerFactory"</arg>
  113.         <arg>"getTransactionManager"</arg>
  114.     </component>
  115.     <component
  116.         class="org.seasar.extension.j2ee.JndiDataSource">
  117.         <arg>initialContext</arg>
  118.         <arg>"jndiName"</arg>
  119.     </component>
  120.     -->
  121.     
  122.     <!-- JBoss
  123.     <component name="initialContext" class="javax.naming.InitialContext"/>
  124.     <component name="transactionManager"
  125.         class="org.seasar.extension.j2ee.JndiTransactionManager">
  126.         <arg>initialContext</arg>
  127.         <arg>"java:/TransactionManager"</arg>
  128.     </component>
  129.     <component
  130.         class="org.seasar.extension.j2ee.JndiDataSource">
  131.         <arg>initialContext</arg>
  132.         <arg>"jndiName"</arg>
  133.     </component>
  134.     -->
  135.     
  136.     <!-- Oracle10gAS
  137.     <component name="initialContext" class="javax.naming.InitialContext"/>
  138.     <component name="transactionManager"
  139.         class="org.seasar.extension.j2ee.JndiTransactionManager">
  140.         <arg>initialContext</arg>
  141.         <arg>"java:comp/UserTransaction"</arg>
  142.     </component>
  143.     <component
  144.         class="org.seasar.extension.j2ee.JndiDataSource">
  145.         <arg>initialContext</arg>
  146.         <arg>"jndiName"</arg>
  147.     </component>
  148.     -->
  149. </components>

log4j.properties

  1. #log4j.category.org.apache.struts=DEBUG, C
  2. log4j.category.org.apache.commons.validator=ERROR
  3. log4j.category.org.seasar=DEBUG, C
  4. log4j.additivity.org.seasar=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

global.css

  1. body {
  2.     padding:0;
  3.     background:#FFFFFF;
  4. }
  5. td, th {
  6.   font-sizesmall;
  7. }
  8. .title {
  9.   font-sizelarge
  10.   font-weightbold;
  11.   color#5671A0;
  12. }
  13. .small {
  14.   font-size70%;
  15.   colorwhite;
  16. }
  17. .small a, small a:visited {
  18.   colorwhite;
  19. }
  20. .smalltitle {
  21.   font-sizesmall;
  22.   font-weightbold;
  23.   color#5671A0;
  24. }
  25. .toolbar {
  26.   padding4px
  27.   background-color#7694C8;
  28. }
  29. .tablebg {
  30.   background-color#EEF3FB;
  31. }
  32. .oddRow, .row-1 {
  33.   background-color#FFFFFF;
  34. }
  35. .evenRow, .row-0 {
  36.   background-color#EEF3FB;
  37. }
  38. .left {
  39.   text-alignleft;
  40. }
  41. .right {
  42.   text-alignright;
  43. }
  44. .box {
  45.   borderthin solid #7694C8;
  46. }
  47. .label {
  48.   background-color#ffffcc;
  49. }
  50. .display {
  51.   displayinline;
  52. }
  53. .notdisplay {
  54.   displaynone;
  55. }
  56. .level0 {
  57. }
  58. .level1 {
  59. }
  60. .body {
  61.     margin-left:188px;
  62. }
  63. .header {
  64.     padding:4px;
  65. }
  66. .menu {
  67.     background:#FC0;
  68.     padding:0;
  69.     position:absolute;
  70.     width:120px;
  71.     top:145px;
  72. }
  73. .text {
  74.   text-alignleft;
  75. }
  76. .number {
  77.   text-alignright;
  78. }
  79. .date {
  80.   text-alignleft;
  81. }
  82. .error {
  83.   background-colorred;
  84. }
  85. .text-error {
  86.   background-colorred;
  87.   text-alignleft;
  88. }
  89. .number-error {
  90.   background-colorred;
  91.   text-alignright;
  92. }
  93. .date-error {
  94.   background-colorred;
  95.   text-alignleft;
  96. }

execute.js

  1. //
  2. //
  3. //
  4. function go(inputTag, action) {
  5.     if (action != null) {
  6.          inputTag.form.action = inputTag.form.action.replace(///[^//]*$/, action);
  7.     }
  8.     inputTag.form.method.value=inputTag.name;
  9. }

layout.html

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4.   <meta http-equiv="Content-Type" content="text/html; charset=Windows-31j">
  5.   <link href="../../css/global.css" rel="stylesheet" type="text/css" id="globalStyle"></link>
  6.   <script type="text/javascript" src="../../js/execute.js" id="executeJs"></script>
  7.   <title id="pageTitle">
  8.     S2Struts Sample
  9.   </title>
  10. </head>
  11. <body>
  12. <table border="0" cellspacing="5" width="97%">
  13. <tr>
  14.   <td colspan="2">
  15.     <div id="header">
  16.       <img src="../../images/seasar.gif">
  17.     </div>
  18.   </td>
  19. </tr>
  20. <tr>
  21.   <td width="200" valign="top">
  22.     <div id="navigation">
  23.       <ul>
  24.         <li><a href="#">MENU 1</a></li>
  25.         <li><a href="#">MENU 2</a></li>
  26.         <li><a href="#">MENU 3</a></li>
  27.       </ul>
  28.     </div>
  29.   </td>
  30.   <td valign="top" align="left">
  31.     <div id="layoutBody">
  32.       DUMMY
  33.     </div>
  34.   </td>
  35. </tr>
  36. <tr>
  37.   <td colspan="2">
  38.     <hr/>
  39.   </td>
  40. </tr>
  41. <tr>
  42.   <td colspan="2">
  43.     <div id="footer">
  44.       The Seasar Project
  45.     </div>
  46.   </td>
  47. </tr>
  48. </table>
  49. </body>
  50. </html>

layout.mayaa

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <m:mayaa xmlns:m="http://mayaa.seasar.org"
  3.         xmlns:html="http://struts.apache.org/tags-html">
  4.         
  5.     <m:echo id="globalStyle">
  6.         <m:attribute name="href" value="${contextPath}/css/global.css" />
  7.     </m:echo>
  8.     <m:echo id="executeJs">
  9.         <m:attribute name="src" value="${contextPath}/js/execute.js" />
  10.     </m:echo>
  11.     <m:insert id="pageTitle" name="title" replace="false" />
  12.     <m:insert id="layoutBody" name="content" replace="false" />
  13.     <m:insert id="navigation" replace="false"
  14.             path="/pages/layout/menu.html" name="menu" />
  15.     <html:img m:id="header" page="/images/seasar.gif" m:replace="false"/>
  16.     <!-- ignored ids -->
  17.     <m:ignore id="footer" />
  18. </m:mayaa>

menu.html

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4.   <meta http-equiv="Content-Type" content="text/html; charset=Windows-31j">
  5.   <link href="../../css/global.css" rel="stylesheet" type="text/css"></link>
  6.   <script type="text/javascript" src="../../js/execute.js"></script>
  7.   <title>
  8.     S2Struts Sample Menu
  9.   </title>
  10. </head>
  11. <body>
  12. <div id="menuBody">
  13. <ul>
  14. <li><a href="#" id="addPage">S2Struts Add Application</a></li>
  15. </ul>
  16. </div>
  17. </body>
  18. </html>

menu.mayaa

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <m:mayaa xmlns:m="http://mayaa.seasar.org"
  3.         xmlns:html="http://struts.apache.org/tags-html"
  4.         xmlns:bean="http://struts.apache.org/tags-bean"
  5.         m:noCache="true">
  6.     <m:doRender id="menuBody" name="menu"/>
  7.     <html:link m:id="addPage" page="/pages/addInput.html"><bean:message key="add.title"/></html:link>
  8. </m:mayaa>

addInput.html

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4.   <meta http-equiv="Content-Type" content="text/html; charset=Windows-31j">
  5.   <link href="../../css/global.css" rel="stylesheet" type="text/css"></link>
  6.   <script type="text/javascript" src="../../js/execute.js"></script>
  7.   <title id="pageTitle">
  8.     S2Struts Add Application Demo
  9.   </title>
  10. </head>
  11. <body>
  12. <div id="appBody">
  13.   <div id="errorMessage"></div>
  14.   <form method="GET" action="result.html" id="appForm">
  15.     <input name="arg1" type="text"> +
  16.     <input name="arg2" type="text">
  17.     <input type="submit" value="calculate" id="goCalc">
  18.   </form>
  19. </div>
  20. </body>
  21. </html>

addInput.mayaa

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <m:mayaa xmlns:m="http://mayaa.seasar.org"
  3.         xmlns:html="http://struts.apache.org/tags-html"
  4.         xmlns:bean="http://struts.apache.org/tags-bean"
  5.         m:noCache="true"
  6.         m:extends="/pages/layout/layout.html">
  7.     <m:doRender id="pageTitle" name="title">
  8.         <bean:message key="add.title"/>
  9.     </m:doRender>
  10.     
  11.     <m:doRender id="appBody" name="content"/>
  12.     
  13.     <html:errors m:id="errorMessage" />
  14.     <html:form m:id="appForm" action="/add" focus="arg1" />
  15.     
  16.     <html:submit m:id="goCalc" ><bean:message key="calc"/></html:submit>
  17. </m:mayaa>

result.html

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4.   <meta http-equiv="Content-Type" content="text/html; charset=Windows-31j">
  5.   <link href="../../css/global.css" rel="stylesheet" type="text/css"></link>
  6.   <script type="text/javascript" src="../../js/execute.js"></script>
  7.   <title id="pageTitle">
  8.     S2Struts Application Result Demo
  9.   </title>
  10. </head>
  11. <body>
  12. <div id="appBody">
  13.   <div id="resultMessage">
  14.     result:100
  15.   </div>
  16. </div>
  17. </body>
  18. </html>

result.mayaa

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <m:mayaa xmlns:m="http://mayaa.seasar.org"
  3.         xmlns:html="http://struts.apache.org/tags-html"
  4.         xmlns:bean="http://struts.apache.org/tags-bean"
  5.         m:noCache="true"
  6.         m:extends="/pages/layout/layout.html">
  7.     <m:doRender id="pageTitle" name="title">
  8.         <bean:message key="result.title"/>
  9.     </m:doRender>
  10.     
  11.     <m:doRender id="appBody" name="content"/>
  12.     
  13.     <div m:id="resultMessage">
  14.         <bean:message key="result"/>:<bean:write name="calcForm" property="result"/>
  15.     </div>
  16.     
  17. </m:mayaa>

struts-config.xml

  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  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-beans>
  7.         <form-bean name="calcForm" type="org.seasar.struts.examples.form.CalculationForm"/>
  8.     </form-beans>
  9.     <action-mappings>
  10.         <action
  11.             path="/add"
  12.             type="org.seasar.struts.examples.add.AddAction"
  13.             name="calcForm"
  14.             scope="request"
  15.             validate="false"
  16.             input="/pages/addInput.html">
  17.             <forward name="success" path="/pages/result.html" />
  18.         </action>
  19.     </action-mappings>
  20.     
  21.     <controller processorClass="org.seasar.struts.processor.S2RequestProcessor"/>
  22.     <message-resources parameter="application"/>
  23.     <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  24.         <set-property property="pathnames"
  25.           value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
  26.     </plug-in>
  27.     
  28.     <plug-in className="org.seasar.struts.plugin.AutoStrutsConfigRegisterPlugIn">
  29.         <set-property property="enableJar" value="false"/>
  30.         <set-property property="docRoot" value="/pages"/>
  31.     </plug-in>
  32. </struts-config>

tiles-defs.xml

  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2. <!DOCTYPE tiles-definitions PUBLIC
  3.        "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
  4.        "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
  5. <!--
  6.      This is a blank Tiles definition file with a commented example.
  7. -->
  8. <tiles-definitions>
  9.     <!-- sample tiles definitions
  10.     <definition name=".mainLayout" path="/common/layouts/classicLayout.jsp">
  11.         <put name="title"  value="Sample Page Title" />
  12.         <put name="header" value="/common/header.jsp" />
  13.         <put name="menu"   value=".mainMenu" />
  14.         <put name="footer" value="/common/footer.jsp" />
  15.         <put name="body"   value=".portal.body" />
  16.     </definition>
  17.     <definition name=".mainMenu" path="/common/layouts/vboxLayout.jsp" >
  18.         <putList name="list" >
  19.             <add value=".menu.links" />
  20.             <add value=".menu.taglib.references" />
  21.             <add value=".menu.printer.friendly" />
  22.             <add value=".menu.old.documents" />
  23.       </putList>
  24.     </definition>
  25.     <definition name="aPage" extends=".mainLayout">
  26.         <put name="title"  value="Another Title" />
  27.         <put name="body"   value=".aPage.body" />
  28.     </definition>
  29.     end samples -->
  30.     <definition name="${YOUR_DEFINITION_HERE}"></definition>
  31. </tiles-definitions>

validation.xml

  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2. <!DOCTYPE form-validation PUBLIC
  3.           "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
  4.           "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
  5. <form-validation>
  6. <!--
  7.     <formset>
  8.         <form name="logonForm">
  9.             <field
  10.                 property="username"
  11.                 depends="required">
  12.                     <arg key="logonForm.username"/>
  13.             </field>
  14.             <field
  15.                 property="password"
  16.                 depends="required,mask">
  17.                     <arg key="logonForm.password"/>
  18.                     <var>
  19.                         <var-name>mask</var-name>
  20.                         <var-value>^[0-9a-zA-Z]*$</var-value>
  21.                     </var>
  22.             </field>
  23.         </form>
  24.     </formset>
  25. -->
  26. </form-validation>

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.FieldChecks"
  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.FieldChecks"
  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.        This simply allows struts to include the validateUtilities into a page, it should
  281.        not be used as a validation rule.
  282.      -->
  283.      <validator name="includeJavaScriptUtilities"
  284.             classname=""
  285.                method=""
  286.          methodParams=""
  287.               depends=""
  288.                   msg=""
  289.            jsFunction="org.apache.commons.validator.javascript.validateUtilities"/>
  290.    </global>
  291. </form-validation>

web.xml

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!DOCTYPE web-app
  3.     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  4.     "http://java.sun.com/dtd/web-app_2_3.dtd">
  5. <web-app>
  6.   <display-name>Struts Application</display-name>
  7.   <filter>
  8.     <filter-name>s2filter</filter-name>
  9.     <filter-class>org.seasar.framework.container.filter.S2ContainerFilter</filter-class>
  10.   </filter>
  11.   <filter>
  12.     <filter-name>s2strutsfilter</filter-name>
  13.     <filter-class>org.seasar.struts.filter.S2StrutsFilter</filter-class>
  14.   </filter>
  15.   <filter>
  16.     <filter-name>encodingfilter</filter-name>
  17.     <filter-class>org.seasar.extension.filter.EncodingFilter</filter-class>
  18.     <init-param>
  19.       <param-name>encoding</param-name>
  20.       <param-value>Windows-31j</param-value>
  21.     </init-param>
  22.   </filter>
  23.   <filter-mapping>
  24.     <filter-name>s2filter</filter-name>
  25.     <url-pattern>/*</url-pattern>
  26.   </filter-mapping>
  27.   <filter-mapping>
  28.     <filter-name>s2strutsfilter</filter-name>
  29.     <url-pattern>/*</url-pattern>
  30.   </filter-mapping>
  31.   <filter-mapping>
  32.     <filter-name>encodingfilter</filter-name>
  33.     <url-pattern>/*</url-pattern>
  34.   </filter-mapping>
  35.   <servlet>
  36.     <servlet-name>s2container</servlet-name>
  37.     <servlet-class>org.seasar.framework.container.servlet.S2ContainerServlet</servlet-class>
  38.     <load-on-startup>1</load-on-startup>
  39.   </servlet>
  40.   
  41.   <!-- Standard Action Servlet Configuration (with debugging) -->
  42.   <servlet>
  43.     <servlet-name>action</servlet-name>
  44.     <servlet-class>org.seasar.struts.servlet.S2ActionServlet</servlet-class>
  45.     <init-param>
  46.       <param-name>config</param-name>
  47.       <param-value>/WEB-INF/struts-config.xml</param-value>
  48.     </init-param>
  49.     <init-param>
  50.       <param-name>debug</param-name>
  51.       <param-value>2</param-value>
  52.     </init-param>
  53.     <init-param>
  54.       <param-name>detail</param-name>
  55.       <param-value>2</param-value>
  56.     </init-param>
  57.     <load-on-startup>2</load-on-startup>
  58.   </servlet>
  59.   <servlet>
  60.     <servlet-name>MayaaServlet</servlet-name>
  61.     <servlet-class>org.seasar.mayaa.impl.MayaaServlet</servlet-class>
  62.     <load-on-startup>3</load-on-startup>
  63.   </servlet>
  64.   <servlet-mapping>
  65.     <servlet-name>s2container</servlet-name>
  66.     <url-pattern>/s2container</url-pattern>
  67.   </servlet-mapping>
  68.   <!-- Standard Action Servlet Mapping -->
  69.   <servlet-mapping>
  70.     <servlet-name>action</servlet-name>
  71.     <url-pattern>*.do</url-pattern>
  72.   </servlet-mapping>
  73.   <servlet-mapping>
  74.     <servlet-name>MayaaServlet</servlet-name>
  75.     <url-pattern>*.html</url-pattern>
  76.   </servlet-mapping>
  77.   <!-- The Usual Welcome File List -->
  78.   <welcome-file-list>
  79.     <welcome-file>index.html</welcome-file>
  80.     <welcome-file>index.jsp</welcome-file>
  81.   </welcome-file-list>
  82. </web-app>

debug.js

  1. /* set true/false */
  2. var debug = true;
  3. if (debug) {
  4.     load("dump.js");
  5. }

default.mayaa

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <m:mayaa xmlns:m="http://mayaa.seasar.org">
  3.     <m:beforeRender><![CDATA[
  4.         var contextPath = request.getContextPath();
  5.         var println = function(value) {
  6.             if (value != null) {
  7.                 java.lang.System.out.println(value);
  8.             } else {
  9.                 java.lang.System.out.println("" + value);
  10.             }
  11.         };
  12.         load("debug.js");
  13.     ]]></m:beforeRender>
  14. </m:mayaa>

dump.js

  1. function printAttribute(req) {
  2.     var names = req.getAttributeNames();
  3.     while (names.hasMoreElements()) {
  4.         var name = names.nextElement();
  5.         print("att: " + name + " = " + req.getAttribute(name));
  6.     }
  7. }
  8. function printParameter(req) {
  9.     var names = req.getParameterNames();
  10.     while (names.hasMoreElements()) {
  11.         var name = names.nextElement();
  12.         print("prm: " + name + " = " + req.getParameter(name));
  13.     }
  14. }
  15. function printSession(session) {
  16.     var names = session.getAttributeNames();
  17.     while (names.hasMoreElements()) {
  18.         var name = names.nextElement();
  19.         print("ses: " + name + " = " + session.getAttribute(name));
  20.     }
  21. }
  22. function print(value) {
  23.     java.lang.System.out.println("" + value);
  24. }
  25. var req = request.getUnderlyingContext();
  26. print("------ req-path: " + request.getRequestedPath());
  27. printParameter(req);
  28. printAttribute(req);
  29. printSession(req.getSession());

index.html

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4.   <link href="../../css/global.css" rel="stylesheet" type="text/css"></link>
  5.   <script type="text/javascript" src="../../js/execute.js"></script>
  6.   <title id="pageTitle">
  7.     S2Struts Sample Calculate Application Demo
  8.   </title> 
  9. </head>
  10. <body>
  11. <div id="appBody">
  12. </div>
  13. </body>
  14. </html>

index.mayaa

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <m:mayaa xmlns:m="http://mayaa.seasar.org" 
  3.         xmlns:bean="http://struts.apache.org/tags-bean"
  4.         m:noCache="true"
  5.         m:extends="/pages/layout/layout.html">
  6.     <m:doRender id="pageTitle" name="title">
  7.         <bean:message key="sample.title"/>
  8.     </m:doRender>
  9.     
  10.     <m:doRender id="appBody" name="content"/>
  11. </m:mayaa>
原创粉丝点击