action代码:private String fileName;
private InputStream inputStream;
public String getFileName() {
try {
fileName = new String(fileName.getBytes("ISO-8859-1"),"utf-8");
} catch (Exception e) {
e.printStackTrace();
}
return fileName;
}
public void setFileName(String fileName) {
try {
fileName = new String(fileName.getBytes("ISO-8859-1"),"utf-8");
} catch (Exception e) {
e.printStackTrace();
}
this.fileName = fileName;
}
public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
public InputStream getInputStream() {
System.out.println(ServletActionContext.getServletContext().getResourceAsStream("/share/" + fileName));
return ServletActionContext.getServletContext().getResourceAsStream("/share/" + fileName);
}
public String downloadShare(){
System.out.println("download!");
return "successs";
}
struts2.xml
<action name="downloadShare" class="shareAction" method="downloadShare">
<result name="success" type="stream">
<param name="contentType">application/octet-stream;charset=utf-8</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">4096</param>
</result>
</action>在文件下载的时候发现可以进入action的下载方法中但是没有调用getInputStream()方法,同时报以下错误
java.lang.RuntimeException: Invalid action class configuration that references an unknown class named [shareAction]
org.apache.struts2.convention.ConventionsServiceImpl.determineResultPath(ConventionsServiceImpl.java:100)
org.apache.struts2.convention.ConventionUnknownHandler.determinePath(ConventionUnknownHandler.java:385)
org.apache.struts2.convention.ConventionUnknownHandler.handleUnknownResult(ConventionUnknownHandler.java:274)
com.opensymphony.xwork2.DefaultUnknownHandlerManager.handleUnknownResult(DefaultUnknownHandlerManager.java:76)
com.opensymphony.xwork2.DefaultActionInvocation.createResult(DefaultActionInvocation.java:215)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:356)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)高手看看啊
private InputStream inputStream;
public String getFileName() {
try {
fileName = new String(fileName.getBytes("ISO-8859-1"),"utf-8");
} catch (Exception e) {
e.printStackTrace();
}
return fileName;
}
public void setFileName(String fileName) {
try {
fileName = new String(fileName.getBytes("ISO-8859-1"),"utf-8");
} catch (Exception e) {
e.printStackTrace();
}
this.fileName = fileName;
}
public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
public InputStream getInputStream() {
System.out.println(ServletActionContext.getServletContext().getResourceAsStream("/share/" + fileName));
return ServletActionContext.getServletContext().getResourceAsStream("/share/" + fileName);
}
public String downloadShare(){
System.out.println("download!");
return "successs";
}
struts2.xml
<action name="downloadShare" class="shareAction" method="downloadShare">
<result name="success" type="stream">
<param name="contentType">application/octet-stream;charset=utf-8</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">4096</param>
</result>
</action>在文件下载的时候发现可以进入action的下载方法中但是没有调用getInputStream()方法,同时报以下错误
java.lang.RuntimeException: Invalid action class configuration that references an unknown class named [shareAction]
org.apache.struts2.convention.ConventionsServiceImpl.determineResultPath(ConventionsServiceImpl.java:100)
org.apache.struts2.convention.ConventionUnknownHandler.determinePath(ConventionUnknownHandler.java:385)
org.apache.struts2.convention.ConventionUnknownHandler.handleUnknownResult(ConventionUnknownHandler.java:274)
com.opensymphony.xwork2.DefaultUnknownHandlerManager.handleUnknownResult(DefaultUnknownHandlerManager.java:76)
com.opensymphony.xwork2.DefaultActionInvocation.createResult(DefaultActionInvocation.java:215)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:356)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)高手看看啊
解决方案 »
- 发现java在命令行下面.clss文件不能直接运行的原因了
- 搭建Java Mail的开发环境,找不到C:\JavaMail文件
- jsp要在ubuntu下配置ip
- java web错误 就大神们指点
- 用MyEclipse运行uddi4j示例程序产生错误
- java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
- sqlserver 跟 oracle 用hibernate反向生成的pojo类跟xx.hbm.xml 文件的数据类型有什么区别啊?
- 关于Hibernate读取select count(*)的返回值到底是Long还是Integer的疑惑
- osworkflow如何汉化?
- 关于Oracle使用AS的问题
- FCKeditor编辑器,显示异常
- struts2文件下载报错
System.out.println("download!");
return "successs";
}
控制台可以输出download!
錯誤碼說 Invalid action class configuration that references an unknown class named [shareAction]
顯然問題就出在 shareAction的設定。
// 获取下载文件的名称
private String value; /**
* @return the value
* @throws Exception
*/
public String getValue() throws Exception {
return value;
} /**
* @param value the value to set
* @throws Exception
*/
public void setValue(String value) throws Exception {
this.value = new String(value.getBytes("ISO-8859-1"),"UTF-8");
}
/**
* 将下载的文件读取到内存流中
* @return
* @throws Exception
*/
public InputStream getDownLoadFiles() throws Exception {
HttpServletResponse response = ServletActionContext.getResponse();
response.setHeader("Content-Disposition", "attachment;fileName="+URLEncoder.encode(value,"utf-8"));
return ServletActionContext.getServletContext().getResourceAsStream("/files/"+value);
}
/**
* 提供下载文件的方法
* @return
*/
public String downLoad() {
return "success";
}
}