与Struts 1的Spring集成-将依赖项注入到ActionForm中 - java

我们正在将一个旧的Struts 1项目扩展到Spring管理-但是我们希望尽可能少地更改代码和流程。因此,我们决定离开Struts来管理请求,并通过org.springframework.web.struts.DelegatingActionProxy类委派了操作。

例:

struts-config.xml包含:

<action name="InvalidSession" 
        path="/pages/InvalidSession"
     type="org.springframework.web.struts.DelegatingActionProxy" 
        scope="request">
    <forward name="success" path="/pages/Startup.do" />
</action>

action-servlet.xml包含:

<bean name="/pages/InvalidSession"
      class="com.xxx.actions.InvalidSessionAction" />

现在情节变厚了:

普通的Spring bean已在applicationContext.xml中定义。一个例子:

<bean id="parserUtils" class="com.xxx.el.parser.ParserUtils" >
    <property name="parserFactory" ref="parserFactory"/>
</bean>

现在,我希望将(parserUtils)bean(不是自动连接到这,而是一个问题)连接到ActionForm。

如果我想将其连接到一个动作,我只需在action-servlet.xml中定义以下内容:

<bean name="/pages/CaseUpdate"
      class="com.xxx.actions.CaseUpdateAction" >
   <property name="parserUtils" ref="parserUtils" />
</bean>

在struts-config.xml中:

<action path="/pages/CaseUpdate" 
        name="CaseUpdateForm"
     type="org.springframework.web.struts.DelegatingActionProxy" 
        scope="request">
   <forward name="success" path="/pages/SwitchView.do" />
</action>

但是stuts-config还包含以下ActionForm定义:

<form-bean name="CaseUpdateForm"
           type="com.xxx.forms.CaseUpdateForm" />

我希望将parserUtils bean连接到CaseUpdateForm类。

我必须做什么?

谢谢大家!

参考方案

好像我找到了解决方案:

在struts-config.xml文件中,我进行了更改:

<form-bean name="CaseUpdateForm"
           type="com.xxx.forms.CaseUpdateForm" />

至:

<form-bean name="CaseUpdateForm"
           type="org.springframework.web.struts.SpringBindingActionForm" />

我已经将以下内容添加到action-servlet.xml文件中:

<bean name="CaseUpdateForm" 
      class="com.xxx.forms.CaseUpdateForm" >
   <property name="parserUtils" ref="parserUtils" />
</bean>

和:

<bean name="/pages/CaseUpdate" 
      class="com.xxx.actions.CaseUpdateAction" >
   <property name="caseUpdateForm" ref="CaseUpdateForm" />
</bean>

我已将以下内容添加到CaseUpdateForm.java类文件中:

private ParserUtils parserUtils;

public void setParserUtils(ParserUtils parserUtils) {
    this.parserUtils = parserUtils;
}

然后将以下内容添加到CaseUpdateAction.java类文件中:

private CaseUpdateForm caseUpdateForm;

public void setCaseUpdateForm(CaseUpdateForm caseUpdateForm) {
    this.caseUpdateForm = caseUpdateForm;
}

最后的方法:

public ActionForward execute(ActionMapping mapping,
                     ActionForm form,
                 HttpServletRequest request,
                 HttpServletResponse response) 
                throws Exception 

将以下代码行插入其中:

SpringBindingActionForm springBindingActionForm = (SpringBindingActionForm) form;
ServletRequestDataBinder binder = 
    new ServletRequestDataBinder(caseUpdateForm, "CaseUpdateForm");

binder.bind(request);
springBindingActionForm.expose(binder.getBindingResult(), request);

我还必须在类路径中包含以下jar:

spring-webmvc.jar

这是由于使用了该类:ServletRequestDataBinder

Python re.sub()-> Java - java

This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not…

Java Double与BigDecimal - java

我正在查看一些使用双精度变量来存储(360-359.9998779296875)结果为0.0001220703125的代码。 double变量将其存储为-1.220703125E-4。当我使用BigDecimal时,其存储为0.0001220703125。为什么将它双重存储为-1.220703125E-4? 参考方案 我不会在这里提及精度问题,而只会提及数字…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

页面加载而不是提交时发生struts验证 - java

请原谅我;我对Struts有点陌生。我遇到一个问题,即页面加载而不是我实际提交表单时发生了验证。我整天都在论坛上搜寻和搜寻,没有任何运气。我显然做错了一些事情,应该很容易确定,但是我还没有发现问题所在。这是我的struts.xml的片段:<action name="*Test" method="{1}" clas…

DataSourceTransactionManager和JndiObjectFactoryBean和JdbcTemplate的用途是什么? - java

以下的用途是什么:org.springframework.jdbc.core.JdbcTemplate org.springframework.jdbc.datasource.DataSourceTransactionManager org.springframework.jndi.JndiObjectFactoryBean <tx:annotatio…