jinfeng_wang

          G-G-S,D-D-U!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks
          http://www.logemann.org/day/archives/000148.html


          For all those out there using Spring together with Struts, i created a small howTo regarding automatic generation of relevant files, especially the boring action-servlet-xml file which must be in synch with your struts-config.xml, at least for all Struts actions which should be injected by Spring.

          Lets start with the Action class:

          /**
          * Action to delete a Client
          * Date: 09.02.2005
          * Time: 15:29:15
          *
          * @author Logemann - Logentis e.K. (ml@logentis.de)
          * @version $Id$
          * @struts.action path="clientDelete" validate="false"
          * type="org.springframework.web.struts.DelegatingActionProxy"
          * name="emptyform"
          * @struts.action-forward name="back"
          * path="/clientManager.html" redirect="true"
          * @spring.bean name="clientDelete"
          */
          public class ClientDeleteAction extends Action {

          ClientManager clientManagerService;



          /**

          * Spring injection

          *

          * @param clientManagerService clientManagerService

          * @spring.property ref="clientManagerService"

          */

          public void setClientManagerService(ClientManager clientManagerService) {

          this.clientManagerService = clientManagerService;

          }

          [..]


          With this tags, the ant build target outlined below will create a struts-config.xml and the necessary action-servlet.xml needed by Spring. Lets see how the target looks:

          <path id="classpath">

          <fileset dir="c:/xdoclet-1.2.2" includes="*.jar"/>
          <fileset dir="c:/j2sdkee1.3.1/lib" includes="*.jar"/>
          <fileset dir="c:/struts/lib" includes="struts.jar"/>
          </path>

          <taskdef name="springdoclet"
          classname="xdoclet.modules.spring.SpringDocletTask"
          classpathref="classpath"/>

          <taskdef name="webdoclet"
          classname="xdoclet.modules.web.WebDocletTask"
          classpathref="classpath"/>

          <target name="myTest">
          <webdoclet destDir="c:\" force="true" verbose="true">
          <fileset dir="${src.dir}">
          <include name="**/*Form.java" />
          <include name="**/*Action.java" />
          <include name="**/*Servlet.java" />
          </fileset>
          <strutsconfigxml version="1.1" validateXml="true"/>
          </webdoclet>

          <springdoclet destDir="c:\" verbose="true">
          <fileset dir="${src.dir}">
          <include name="**/*Action.java" />
          </fileset>
          <springxml destinationFile="action-servlet.xml"/>
          </springdoclet>
          </target>

          Be sure to modify the classpath definition and the destDir values of springdoclet and webdoclet to suit your needs. Right now the Spring task only searches for Actions in order to create action-servlet.xml, if you also want to create your normal service beans like ClientManagerService, you should create another springdoclet task and output things to applicationContext.xml if you like.

          But this is mostly users choice, as you know, Spring supports from one to many bean definition files and its up to you how you want to have your spring xml world.

          This will be created when you run the mentioned target:

          (action-servlet.xml)


          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC
          "-//SPRING//DTD BEAN//EN"
          "http://www.springframework.org/dtd/spring-beans.dtd">

          <beans
          default-autowire="no"
          default-lazy-init="false"
          default-dependency-check="none"
          >

          <bean
          name="clientDelete"
          class="de.logentis.versysng.action.clientmanager.ClientDeleteAction"
          >

          <property name="clientManagerService">

          <ref bean="clientManagerService"/>
          </property>

          </bean>

          <!--
          To include additional bean definitions for Spring in the generated
          application context file, add a file to your XDoclet merge directory
          called spring-beans.xml that contains the <bean></bean> markup.
          -->
          </beans>


          (struts-config.xml)


          <?xml version="1.0" encoding="UTF-8" ?>

          <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

          <struts-config>

          <!-- ========== Data Sources Definitions =================================== -->
          <!--
          Define your Struts data sources in a file called struts-data-sources.xml and place
          it in your merge directory.
          -->

          <!-- ========== Form Bean Definitions =================================== -->
          <form-beans>

          <!--
          If you have non XDoclet forms, define them in a file called struts-forms.xml and
          place it in your merge directory.
          -->
          </form-beans>

          <!-- ========== Global Exceptions Definitions =================================== -->
          <!--
          Define your exceptions in a file called global-exceptions.xml and place
          it in your merge directory.
          -->

          <!-- ========== Global Forward Definitions =================================== -->
          <!--
          Define your forwards in a file called global-forwards.xml and place
          it in your merge directory.
          -->

          <!-- ========== Action Mapping Definitions =================================== -->
          <action-mappings>
          <action
          path="clientDelete"
          type="org.springframework.web.struts.DelegatingActionProxy"
          name="emptyform"
          scope="request"
          unknown="false"
          validate="false"
          >
          <forward
          name="back"
          path="/clientManager.html"
          redirect="true"
          />
          </action>

          <!-- If you have non XDoclet actions, define them in a file called struts-actions.xml and place it in your merge directory. -->
          </action-mappings>

          <!-- Define your Struts controller in a file called struts-controller.xml and place it in your merge directory. -->

          <!-- Define your Struts message-resources in a file called struts-message-resources.xml and place it in your merge directory. -->

          <!-- Define your Struts plugins in a file called struts-plugins.xml and place it in your merge directory. -->

          </struts-config>

          posted on 2008-03-20 09:42 jinfeng_wang 閱讀(893) 評論(1)  編輯  收藏 所屬分類: springantjavastructs

          評論

          # re: XDoclet Spring+Struts HowTo zz 2009-07-19 18:56 ddsfsdf@sfsdf.de
          Please remove this blog post or edit it in a way that my email adress is no longer in there!

          Thanks.  回復  更多評論
            

          主站蜘蛛池模板: 永年县| 兰坪| 安乡县| 隆昌县| 弥渡县| 石家庄市| 依兰县| 光泽县| 敦化市| 朔州市| 吉林省| 堆龙德庆县| 若羌县| 巫溪县| 蒙阴县| 冀州市| 澄江县| 武穴市| 芜湖市| 云阳县| 邳州市| 镇巴县| 达拉特旗| 通山县| 许昌市| 城步| 邳州市| 肇源县| 商南县| 洛南县| 镇安县| 泾阳县| 广汉市| 商水县| 阳东县| 调兵山市| 新营市| 乌兰县| 武定县| 古蔺县| 绥化市|