gpt4 book ai didi

java - Spring 与 Struts 1 集成 - 将依赖项注入(inject)到 ActionForm

转载 作者:行者123 更新时间:2023-12-02 08:23:45 25 4
gpt4 key购买 nike

我们正在扩展一个旧的 Struts 1 项目以由 Spring 管理 - 但我们希望尽可能少地更改代码和流程。因此,我们决定让 Struts 来管理请求,并通过 org.springframework.web.struts.DelegatingActionProxy 类委托(delegate)操作。

示例:

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,我只需在 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

关于java - Spring 与 Struts 1 集成 - 将依赖项注入(inject)到 ActionForm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1696275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com