javax.el.PropertyNotFoundException: свойство не найдено для типа java.io.Файл в загрузке простых лиц
Я использую Primefaces 3.2 и разрабатываю функцию загрузки файлов, и я получаю список имен файлов из моего локального каталога, который я хотел отобразить в jsf с возможностью выбора данных с помощью интерактивной опции (h:commandlink).
Когда я оправдываю свой Кодекс, я получаю следующее исключение.
javax.el.PropertyNotFoundException: /faces/fileDownload.xhtml в строке 33 и столбце 115 value="#{x.fileName}": свойство 'fileName' не найдено для типа java.io.File
Мой код выглядит как этот файл Java
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>
Я не могу понять, куда я пошел Неправильно. Пожалуйста, помогите мне.
1 ответ
Как вы пришли к использованию #{x.fileName}
? Посмотрите внимательно в Javadoc java.io.File
класс Да, нет такого метода, какgetFileName()
, Этоименно то, что пытается сказать вам исключение.
value = "# {x.fileName}": свойство 'fileName' не найдено для типа java.io.File
Скорее всего, вы хотели использоватьgetName()
метод вместо.
#{x.name}
Не связанный с конкретной проблемой, ваш код был бы более самодокументированным, если бы вы использовали var="file"
вместо бессмысленного var="x"
,