如何在JSF页面中输入列的所有值?

时间:2013-10-02 12:56:35

标签: excel jsf primefaces

我想知道JSF或primefaces是否有可能在JSF页面上输入列的所有值(例如来自excel)并将其提交给托管bean。这意味着获取托管bean中列表中的值。

我设计了这个数字让你理解我的意思:

enter image description here

你知道我们该怎么做吗?

1 个答案:

答案 0 :(得分:0)

是的,有可能。以下是必要的步骤。

  1. 使用例如<p:fileUpload>组件

    上传Excel文件
    <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);
            }
        }
    }
    
  2. 使用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;
    }
    
  3. 通过标准JSF重新显示数据意味着:将检索到的列表绑定到某个迭代组件,ajax-update it等。