2012-09-10 1 views
2

Primefaces 3.2를 사용하고 있고 파일 다운로드 기능을 개발 중이고 표시하려는 로컬에서 파일 이름 목록을 가져 오는 중입니다. 클릭 가능한 옵션 (h : commandlink)을 사용하여 jsf 데이터 테이블에 저장하십시오.javax.el.PropertyNotFoundException : primefaces 형식의 java.io.File에 속성이 없습니다. 다운로드

본인은 본인의 행동 강령을 이행 할 때 예외적으로 다음과 같이 나타납니다. 라인 (33)과 열 (115)의 값 = "# x.fileName {}"에서 /faces/fileDownload.xhtml :

javax.el.PropertyNotFoundException 재산권 '파일 이름'java.io.File의 종류에 발견하지

내 코드

import java.io.File; 
import java.io.FileInputStream; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 

import org.primefaces.model.DefaultStreamedContent; 
import org.primefaces.model.StreamedContent; 

@ManagedBean(name="fileDownloadController") 
@SessionScoped 
public class FileDownloadController { 

    private StreamedContent file; 
    private List<File> listfiles=new ArrayList<File>(); 
    private String fileName; 

    public FileDownloadController() {   
     File filestream=new File("C:/temp.pdf"); 
     InputStream stream=null; 
     try { 
      stream = new FileInputStream(filestream); 
     file = new DefaultStreamedContent(stream, "application/pdf", "temp.pdf"); 
     stream.close(); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    public List<File> getListfiles() { 
     File folder = new File("c:\\"); 
     File[] listOfFiles = folder.listFiles(); 
     listfiles=Arrays.asList(listOfFiles); 
     int i; 
     for(i=0;i<listfiles.size();i++){ 
     System.out.println("The List of file are"+listfiles.get(i)); 
     listfiles.get(i); 
     } 
     return listfiles; 
    } 

    public void setListfiles(List<File> listfiles) { 
     this.listfiles = listfiles; 
    } 

    public String getFileName() { 
     getListfiles(); 
     return fileName; 
    } 

    public void setFileName(String fileName) { 
     this.fileName = fileName; 
    } 

    public StreamedContent getFile() { 
     return this. file; 
    } 
} 

내 XHTML은 다음과 같습니다이 자바 파일처럼 보인다.

<h:form id="form"> 
<h:dataTable value="#{fileDownloadController.listfiles}" var="x" 
       bgcolor="#F1F1F1" border="10" cellpadding="5" 
       cellspacing="3" first="0" rows="4" width="50%" 
       summary="This is a JSF code to create dataTable."> 
       <h:column> 
       <f:facet name="header"> 
       <h:outputText value="File Names"></h:outputText> 
       </f:facet> 
       <h:commandLink value="#{x.fileName}" onclick="PrimeFaces.monitorDownload(showStatus, hideStatus)"> 
         <p:fileDownload value="#{fileDownloadController.file}" /> 
       </h:commandLink> 
      </h:column> 
       </h:dataTable> 
</h:form> 

나는 내가 Wrong.Please 날 ​​도와 어디로 갔는지 알아낼 수 없습니다입니다.

+0

이 솔루션을 확인하십시오. http://exackoverflow.com/questions/7822758/export-to-excel-jsf-and-primefaces/12526625#12526625 – newuserua

답변

1

#{x.fileName}을 어떻게 사용하게 되었습니까? 신중하게 the javadoc of the java.io.File class에서보세요. 맞습니다. getFileName() 같은 방법은 없습니다. 그것은 입니다. 예외가 당신에게 말하려고합니다.

값 = "# {x.fileName}"

대부분의 경우 대신 getName() 방법을 사용하는 의미 java.io.File의 속성 '파일 이름'형식을 찾을 수 없습니다. 대신 nonsensicial var="x"var="file"를 사용한 경우

#{x.name} 
구체적인 문제에

관련없는, 당신의 코드가 더 자기 문서화 될 것이다.

+0

@BalusC ......... fileName 이외의 다른 이름으로 시도했습니다. 너의 대답으로 마술처럼 너는 일하고있어. 너 락맨 .... 너의 큰 팬이고, 너의 대답은 ... – SRy

+0

. 천만에. – BalusC

+0

@ BalusC .. 내 파일 이름은 위 표와 같습니다. 사용자가 파일을 클릭하면 파일 이름을 FileDownloadController() 메서드에 전달합니다. 안에 전달합니다. 매개 변수를 전달할 때 to filedownloadController (string name) InstantatorException이 발생합니다. 메서드 이름이 변경되면 작동하지 않습니다. 제발 도와주세요. – SRy