我加载页面时遇到问题。我在struts.xml(位于Java Resources/src/com.infopool.action)中定义了下一个配置:
<struts>
<package name="demo" namespace="/demo" extends="struts-default">
<action name="Inicio" class="com.infopool.action.Demo">
<result name="success">/View/demo/start.jsp</result>
</action>
<action name="Hola" class="com.infopool.action.Demo" method="hello">
<result name="success">/View/demo/hello.jsp</result>
</action>
<action name="Chau" class="com.infopool.action.Demo" method="goodbye">
<result name="success">/View/demo/goodbye.jsp</result>
</action>
</package>
</struts>
因此,在 com.infopool.action 包中我定义了下一个类:
package com.infopool.action;
public class Demo {
public String execute(){
return "success";
}
public String hello(){
return "success";
}
public String goodbye(){
return "success";
}
}
View 位于 WebContent/View/demo 中。当我尝试浏览该页面时,出现 404 Tomcat 错误。网址是:
http://localhost:8080/Infopool/demo/Inicio.action
我的 web.xml 有以下配置:
<filter>
<filter-name>Main</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.infopool.action</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Main</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我的配置有什么问题吗?
最佳答案
这个的用途是传递一个已声明所有操作类的操作包
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.infopool.action</param-value>
</init-param>
但是您的演示操作类没有任何注释配置(如果我没有记错的话。)
@Namespace("/demo")
@Action("/Inicio")
@ResultPath(value="/")
@Result(name="success",location="/View/demo/start.jsp")
public class Demo {
....
您使用了另一种方式来配置操作类,即 struts.xml
<struts>
<package name="demo" namespace="/demo" extends="struts-default">
<action name="Inicio" class="com.infopool.action.Demo">
<result name="success">/View/demo/start.jsp</result>
</action>
<action name="Hola" class="com.infopool.action.Demo" method="hello">
<result name="success">/View/demo/hello.jsp</result>
</action>
<action name="Chau" class="com.infopool.action.Demo" method="goodbye">
<result name="success">/View/demo/goodbye.jsp</result>
</action>
</package>
</struts>
所以不需要声明/创建这个,
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.infopool.action</param-value>
</init-param>
在你的struts过滤器里面。
#1 look at this : Providing an init-parameter in struts filter
关于java - Controller 与 url 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27537555/