JSF数据表和文件上传(文件上传问题)
请告诉我你的建议。我想构建具有特定设计的fileUpload,并且在获取上传文件时遇到问题 我的设计: 数据模型类:JSF数据表和文件上传(文件上传问题),jsf,file-upload,datatable,javabeans,Jsf,File Upload,Datatable,Javabeans,请告诉我你的建议。我想构建具有特定设计的fileUpload,并且在获取上传文件时遇到问题 我的设计: 数据模型类: @Named @SessionScoped public class NJDataModel implements Serializable { private static final long serialVersionUID = 1L; private String sectionName; private UploadedFile file;
@Named
@SessionScoped
public class NJDataModel implements Serializable {
private static final long serialVersionUID = 1L;
private String sectionName;
private UploadedFile file;
public NJDataModel(String sectionName) {
this.sectionName = sectionName;
}
public String getSectionName() {
return sectionName;
}
public void setSectionName(String sectionName) {
this.sectionName = sectionName;
}
public UploadedFile getFile() {
return file;
}
public void setFile(UploadedFile file) {
this.file = file;
}
}
数据类:
@ManagedBean(name = "NJData")
@SessionScoped
public class Data implements Serializable {
private static final long serialVersionUID = 1L;
private List<NJDataModel> dataModel;
@PostConstruct
public void init() {
/** defaults */
dataModel = new ArrayList<NJDataModel>();
dataModel.add(new NJDataModel("Title page"));
}
public void upload() {
System.out.println("upload method triggered");
String msg = null;
for (NJDataModel i : dataModel) {
UploadedFile file = i.getFile();
// ERROR: file is always null? so could not get hold of file
if (file != null) {
System.out.println("Uploaded file:" + file.getFileName());
msg += "file:" + file.getFileName() + "size:" + file.getSize() + ", ";
}
}
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(msg));
}
}
您不能用这样的一个命令按钮提交整个数据表。我建议使用primefaces的incell编辑组件。我会尝试一下,让你知道。作为旁注,我已经记住了fileUploadHandler事件。。。
<p:dataTable var="item" value="#{NJData.dataModel}"
draggableColumns="true">
<p:column>
<p:panel>
<f:facet name="header">
<h:outputText value="#{item.sectionName}" />
</f:facet>
<p:fileUpload value="#{item.file}" mode="simple" />
</p:panel>
</p:column>
</p:dataTable>
<p:commandButton value="Submit" ajax="false"
actionListener="#{NJData.upload}" />
file object:null & section name:first page
file object:null & section name:second page