伙计们,我无法在网上清楚地找到这些信息。我有一个动作,我正在生成一个文本文件,但总是作为“generatePDF.action”文件出现在客户端。我希望它显示为receipt.txt文件。
这是我的注释:
@Action(value = "/generateTXT",
results = {
@Result(name = "ok", type = "stream",
params = {"inputName", "inputStream",
"contentType", "application/octet-stream",
"contentDispostion", "attachment;filename=receipt.txt"})
})
答案 0 :(得分:5)
如果您正在使用约定插件,那么让我们使用以下代码进行“/ YourApplicationContext / stream / stream-test”下的参考运行,然后解析为“/YourApplicationContext/stream/document.txt”:
package struts2.stream;
import com.opensymphony.xwork2.ActionSupport;
import java.io.InputStream;
import java.io.StringBufferInputStream;
import org.apache.struts2.convention.annotation.Result;
@Result(name = ActionSupport.SUCCESS, type = "stream", params =
{
"contentType",
"text/hmtl",
"inputName",
"inputStream",
"contentDisposition",
"filename=document.txt"
})
public class StreamTestAction extends ActionSupport{
public InputStream inputStream;
@Override
public String execute(){
inputStream = new StringBufferInputStream("Hello World! This is a text string response from a Struts 2 Action.");
return SUCCESS;
}
}
请注意“contentDisposition”并将其值设置为“filename ='document.txt'”更改'document.txt'可以获得您想要的效果。
答案 1 :(得分:0)
原始注释很好,它只包含一个拼写错误:
“contentDispostion”应为“contentDisposition”
我花了很多时间来弄明白这一点,所以我想我会说清楚: - )
答案 2 :(得分:0)
我的注释基本相同,但我使用了一个引用来设置文件的名称:
@Result(name="export", type="stream",
params={ "contentType", "application/octet-stream",
"inputName", "fileInputStream",
"contentDisposition", "attachment;filename=%{exportFilename}",
"bufferSize", "4096"})
exportFilename是一个带有getter和setter的String变量,它也可以放在一个可继承的类中,因此可以创建一个唯一的ExportAction并使所有操作扩展它。
您可以创建变量来设置所有参数的值。