我试图使用Struts1和Struts2来运行应用程序。原因是它正在被迁移,但是有很多Struts1我们想做一点一点点而不是大爆炸...我知道这可以做到
无论如何,我无法获取我的S2过滤器来获取我的URL,并且在访问* .action URL时没有给出任何错误!所有S1页面仍然可以正常工作。我的Web XML包含S2配置...
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
和S1 servlet
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
我还设置了一个简单的TestStruts2Action类来扩展Action,它实际上只有一个syso来证明它已经到达了行动。的XMLConfig&#39;
<package name="main" extends="struts-default">
<action name="testStruts2" class="com.myclass.TestStruts2Action">
<result name="success">test/testStruts2.jsp</result>
</action>
</package>
当我点击URL /MyApp/testStruts2.action时,我得到的是应用程序404页面
我的JSP实际上只是一个HelloWorld示例并保存在test / testStruts2.jsp下
有什么想法吗?在启动过程中没有错误或在我点击URL时记录下来我不知道接下来要尝试什么...
尝试添加名称空间
答案 0 :(得分:1)
好的,我觉得我做错了什么......
我的struts.xml文件放在WEB-INF中的旧struts-config文件旁边,新的过滤器没有读取它。我使用this post来计算出那个,并在web.xml中修改了我的过滤器声明
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,struts.xml</param-value>
</init-param>
然而这引起了我的注意
@AleksandrM
&#39;此外,您定义xml文件的顺序也很重要。例如。如果尚未加载struts.xml中的struts-default包(来自struts-default.xml),则无法扩展。&#39;
@AleksandrM您的意思是,如果您移动struts.xml位置,则无法在包声明中扩展struts-default?