我想知道JSF或primefaces是否有可能在JSF页面上输入列的所有值(例如来自excel)并将其提交给托管bean。这意味着获取托管bean中列表中的值。
我设计了这个数字让你理解我的意思:
你知道我们该怎么做吗?
答案 0 :(得分:0)
是的,有可能。以下是必要的步骤。
使用例如<p:fileUpload>
组件
<h:form enctype="multipart/form-data">
<p:fileUpload value="#{bean.file}" mode="simple"/>
<p:commandButton value="Submit" ajax="false" action="#{bean.upload}"/>
</h:form>
和
public class Bean {
private UploadedFile file;//getter + setter
private List<String> data;//placeholder
public void upload() {
if(file != null) {
extractData(file.getInputstream);
}
}
}
使用Apache POI库中的extractData
方法读取文件内容:
private void extractData(InputStream is) {
HSSFWorkbook workbook = new HSSFWorkbook(is);
HSSFSheet sheet = workbook.getSheetAt(0);
List<String> data = new ArrayList<String>();
for(Row row : sheet) {
Cell cell = r.getCell(0, Row.RETURN_BLANK_AS_NULL);
if(c != null) {
String content = cell.getStringCellValue();
data.add(String);
}
}
this.data = data;
}
通过标准JSF重新显示数据意味着:将检索到的列表绑定到某个迭代组件,ajax-update it等。