我正处于将Struts 2应用程序迁移到spring框架的非常早期阶段。我已经在这个项目中添加了几个spring模块,包括spring核心、spring安全性,现在我将尝试离开struts,转而支持spring。
不过,我遇到了一些困难--我正试图把我的一些支撑动作重新映射到豆子上。下面是一个例子:
在我的struts.xml文件中配置了一个操作:
<package name="default" extends="struts-default">
<result-types>
<result-type name="json" class="org.apache.struts2.json.JSONResult" />
</result-types>
...
<action name="tools" class="com.carfax.pb.dashboard.processing.action.RerunEventsAction" method="getAllRerunEvents">
<result name="success">/WEB-INF/jsp/tools/home.jsp</result>
</action>
...
</package>基本上,我有一个tools.home jsp页面,它是上面定义的操作的视图。我为这个视图创建了一个控制器类(基本上是将实现从操作中删除,并将其移动到groovy控制器类中):
@Controller
@RequestMapping("/tools")
class RerunEventsController {
...
public String getAllRerunEvents() {
...
return ActionSupport.SUCCESS;
}
...
}现在我想弄清楚如何把这两条线连接起来,这就是我遇到困难的地方。
我试过的是-
web.xml:
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/PBDashboard/*</url-pattern>
</servlet-mapping>servlet.xml:
// Spring应该会自动找到我的控制器,因为它存在于这个包中
<context:component-scan base-package="com.carfax.pb.dashboard.processing.action" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/jsp/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>我的web.xml同时设置了Struts2过滤器和过滤器映射,如下所示:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>当我导航到appname/tools时,我会得到一个struts错误,上面写着“名称空间/和操作名称工具没有被映射的操作”
这显然是正确的,但我觉得我已经建立了spring应该进行的映射。
有人能告诉我一些关于如何正确地做这件事的信息吗?更好地指出我的错误?
发布于 2012-11-09 19:34:28
如果我是正确的,您的web.xml也应该有Struts过滤器,在/*上。然后,您可以将您的DispatcherServlet映射为默认servlet (/),并使用如下所示的方法排除struts.xml中迁移的操作:
<constant name="struts.action.excludePattern" value="/tools"/>然后,Struts应该处理除/tools之外的每个请求,并将/tools URL留给Spring。
https://stackoverflow.com/questions/13314240
复制相似问题