我试图在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>
我的项目层次结构为:
答案 0 :(得分:1)
没有映射为url的操作意味着Struts无法找到具有错误消息打印的映射的操作配置。
实际上,文件struts.xm
位于Web内容根目录下的classes
文件夹中。但它应该在classpath上。将其移动到Java源文件夹或资源,然后在运行应用程序时将其复制到正确的位置。