Seam下载控件

时间:2014-09-30 23:58:18

标签: jsf download seam

我使用接缝,我有一系列网页都支持相同的操作。在第一个网页上,您可以选择上传文件。在最后一页上,您确认了一些信息,然后保存了所有内容。在此确认页面上,我有一个链接,可以下载在开始时上传的文件。

除了下载链接想要将用户带到另一个页面(而不是仅仅下载文件或在另一个窗口/选项卡中打开它)以及如果您按照链接或在另一个选项卡中打开它,这一切都正常支持操作不再是原始会话的一部分,因此所有值都为空。

这是我的资源<s:resource xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://jboss.com/products/seam/taglib" data="#{myAction.pdf}" contentType="application/pdf" fileName="#{myAction.pdfName}"/>

这是下载控件:

<s:download src="/exportPdf.xhtml" rendered="#{myAction.hasPdf}" >
        <h:outputText value="#{myAction.pdfName}"/>
    </s:download>

这里是动作类:

@Name("myAction")
@Scope(ScopeType.CONVERSATION)
public class MyAction { 
private byte[] pdf;
private String pdfName;
public String getPdfName() {
   return pdfName;
}
public void setPdfName(String pdfName) {
   this.pdfName = pdfName;
}
public byte[] getPdf() {
   return pdf;
}

public void setpdf(byte[] pdf) {
   this.pdf = pdf;
}

public boolean hasPdf(){
  return true;
}

链接使用文件名呈现正常,单击它会转到getPdf()方法,该方法应返回pdf的字节数组。支持操作中的所有内容现在都为null。由于某种原因,链接的资源似乎不包含在原始操作的范围内。

1 个答案:

答案 0 :(得分:0)

我最终创建了一个休息服务来提供文件,并使用了一个标准的html链接标记,目标是“_blank”。