-1

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

我设计这个图是为了让你明白我的意思:

在此处输入图像描述

你知道我们该怎么做吗?

4

1 回答 1

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. extractData使用例如Apache POI库读取方法中的文件内容:

    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 更新等。

于 2013-10-02T13:30:36.503 回答