2014-09-30 54 views
0

我正在使用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> 

这里的Action类:

@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; 
} 

链接呈现细跟的文件名,然后点击它去应该返回pdf的字节数组的getPdf()方法。只是支持行动中的所有内容现在都是空的。由于某种原因,链接资源似乎未包含在原始操作的范围内。

+0

您是否尝试过使用s:download标记的'propagation'属性?这应该允许您传播当前的对话 – DaveB 2014-10-05 21:30:06

回答

0

我最终创建了一个rest服务来为文件提供服务,并使用了一个标准的html链接标签来定位“_blank”。