java - Controller 与 url 不匹配

标签 java struts2 tomcat7

我加载页面时遇到问题。我在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

#2 see this sample : struts2 annotation

关于java - Controller 与 url 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27537555/

相关文章:

java - 将 PDF 从 servlet 转换为旧版本?

java - 将十六进制颜色字符串转换回整数

jsp - request.getSession() 在 sendRedirect() 之后创建新 session

java - 在strut 2.0中的迭代器中使用复选框

Tomcat ExpiresFilter 无法正常工作

java - ItemStateChanged 在 JComboBox 中调用了两次

java - 为什么在 R 中安装包时出现错误?

javascript - 如何将列表从 Struts 操作类传递到 Jsp 下拉列表

eclipse - 无法从eclipse运行tomcat服务器

java - Tomcat 禁用序列化比较