春天的支柱和形式

时间:2010-04-15 08:17:30

标签: spring forms struts

我需要将struts与spring集成到一个项目中。

我阅读doc to ing struts的文档,对于经典bean来说没关系,但我的表单有问题。

我的struts-config.xml中有一个这样的表单:

  <form-beans>
<form-bean name="creationForm" type="org.apache.struts.validator.DynaValidatorActionForm" >

  <form-property name="libelle" type="java.lang.String" />
  <form-property name="quantite" type="java.lang.String" />
  <form-property name="prix" type="java.lang.String" initial="10" />

</form-bean>

但是我在struts-config中有一个“类型”是很奇怪的,因为它是管理bean的spring。

我在doc中没有找到任何管理表单的内容,而struts-config中的表单必须使用“type”属性。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

我不确切地知道你选择如何整合这两个框架,但从经验中我可以告诉你它是有效的。

例如我的struts-config.xml具有以下内容:

<struts-config>
    <!-- ================== Form Beans ================ -->
    <form-beans>
        <form-bean name="UploadForm" type="com.foo.bar.forms.UploadForm" />
    </form-beans>
    <!-- ================== Action Mapping Definitions ================ -->
    <action-mappings>
        <action path="/pages/UploadFiles" name="UploadForm"
            type="org.springframework.web.struts.DelegatingActionProxy" scope="request"
            input="/pages/ImportFiles.jsp">
            <forward name="success" path="/pages/SwitchView.do" />
        </action>
    <!-- ================================ Plugins ============================== -->
    <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
        <set-property property="contextConfigLocation"
            value="/WEB-INF/action-servlet.xml, /WEB-INF/applicationContext.xml" />
    </plug-in>
</struts-config>

我的action-servlet.xml文件包含以下bean定义:

<bean name="/pages/UploadFiles" class="com.foo.bar.actions.UploadFilesAction" />

这样Struts-1保留了对MVC的控制权,但Spring“管理”了整个应用程序。

希望有所帮助

修改

你的web.xml应该有以下内容:

<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<servlet>
    <servlet-name>context</servlet-name>
    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

编辑2:

  

嗯,在你的struts-config中,你设置了   表单的类型   (com.foo.bar.forms.UploadForm)喜欢   我

     

我的代码工作但它是奇怪的struts   管理表单bean和spring管理   其他豆类。

我认为这根本不奇怪......

  

具体而言,我想知道是否   可以这样做

添加bean:

<bean name="CaseUpdateForm" class="com.foo.bar.forms.CaseUpdateForm" >

并将上面的bean转换为:

<bean name="/pages/UploadFiles" class="com.foo.bar.actions.UploadFilesAction">
   <property name="updateForm" ref="UpdateForm" />
</bean>

答案 1 :(得分:0)

嗯,在你的struts-config中,你像我一样设置表单的类型(com.foo.bar.forms.UploadForm)。

我的代码工作但是奇怪的struts管理表单bean和spring管理其他bean。

具体来说,我想知道是否可以这样做(我用你的例子):

的struts-config:

<form-beans>
    <form-bean name="UploadForm" />
</form-beans>

动作的servlet:

 <bean name="UploadForm" class="com.foo.bar.forms.UploadForm" >
  </bean>