-1

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 に答える