我们正在将一个旧的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
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…