在struts 2应用程序中获取无动作映射错误

时间:2016-04-16 13:54:58

标签: java tomcat struts2 apache-poi

我试图在struts应用程序中返回poi excel工作簿,同时单击下载按钮,但它提供HTTP状态404 - 没有映射名称空间[/]的动作和与上下文关联的动作名称[send]路径[/ Generator]。

我的web.xml文件是:

 
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>ExcelGenerator</display-name>
  <welcome-file-list>
    <welcome-file>download.jsp</welcome-file>

  </welcome-file-list>
 <display-name>Struts2FileDownload</display-name>

    <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
       org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
      </filter-class>
    </filter>

    <filter-mapping>
      <filter-name>struts2</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

我的struts.xml文件是:

 
    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <constant name="struts.devMode" value="true"></constant>
    <package name="Generator" extends="struts-default">
         <action name="send" class="org.home.Send" method="execute">
           <result name="success" type="stream">
             <param name="contentType">application/vnd.ms-excel</param>
             <param name="inputName">input</param>
             <param name="contentDisposition">application;filename="example.xls"</param>
             <param name="bufferSize">4090</param>
           </result>
         </action>
    </package>

</struts>

我的项目层次结构为:

enter image description here

1 个答案:

答案 0 :(得分:1)

没有映射为url的操作意味着Struts无法找到具有错误消息打印的映射的操作配置。

实际上,文件struts.xm位于Web内容根目录下的classes文件夹中。但它应该在classpath上。将其移动到Java源文件夹或资源,然后在运行应用程序时将其复制到正确的位置。