2014-09-30 5 views
0

나는 솔기를 사용하고 있으며 일련의 웹 페이지에는 모두 동일한 작업으로 백업되어 있습니다. 첫 번째 웹 페이지에는 파일을 업로드 할 수있는 옵션이 있습니다. 마지막 페이지에서 몇 가지 정보를 확인한 다음 모든 정보가 저장됩니다. 이 확인 페이지에는 처음부터 업로드 된 파일을 다운로드 할 수있는 링크가 있습니다.Seam 다운로드 제어

다운로드 링크가 다른 페이지로 이동하려는 경우 (파일을 다운로드하거나 다른 창/탭에서 열지 않고) 링크를 따르거나 다른 페이지에서 열 경우 탭을 누르면 뒷받침 작업이 더 이상 원래 대화의 일부가 아니므로 모든 값이 null입니다.

여기 여기 내 자원 <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}"/>

의 다운로드 컨트롤의 :

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

링크는 파일 이름으로 잘 렌더링하고 이동 않습니다 클릭 : 여기

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

액션 클래스의 pdf의 바이트 배열을 돌려 줄 getPdf() 메소드 후행 작업의 모든 것이 이제는 null입니다. 어떤 이유로 링크 된 리소스가 원래 작업의 범위에 포함되지 않은 것으로 보입니다.

+0

s : download 태그의 'propagation'속성을 사용해 보셨습니까? 이렇게하면 현재 대화를 전파 할 수 있습니다. – DaveB

답변

0

"_blank"를 타겟팅하는 표준 html 링크 태그를 사용하여 파일을 제공하는 휴식 서비스를 만들었습니다.