Я использую расширения простого лица (версия 6.2) и начал использовать компонент Sheet.Я загружаю файл Excel, анализирую его, создаю объекты на основе этих данных, а затем добавляю его в список, который является объектом, который я использовал для свойства value листа.До недавнего времени все работало нормально.Проблема в том, что после того, как метод, который выполняет весь синтаксический анализ, создает объекты и т. Д., Выполняется, и лист обновляется, данные не отображаются, а заголовки даже исчезают.Кто-нибудь знает, в чем проблема?
Вот компонент для загрузчика файлов, лист и метод, который делает магию
<p:fileUpload
id="excelUploader"
mode="advanced"
value="#{excelDemoBean.file}"
invalidSizeMessage="Please upload file within file size limits"
sizeLimit="104857600"
process="@this"
update=":#{p:component('sheet')}"
fileUploadListener="#{excelDemoBean.handleFileUpload}"
allowTypes="/(\.|\/)(xls|xlsx)$/i">
</p:fileUpload>
<pe:sheet
id="sheet"
widgetVar="sheetWidget"
value="#{excelDemoBean.wpList}"
var="row"
rowKey="#{row.id}"
height="400"
fixedCols="2"
stretchH="all"
showRowHeaders="true"
resizableCols="true"
resizableRows="true"
sortOrder="ascending"
readOnly="false">
<f:facet name="header">
<h:outputText value="Uploaded Excel File" />
</f:facet>
<pe:sheetcolumn
headerText="Name"
value="#{row.name}"
sortBy="#{row.name}"
colWidth="150"
filterBy="#{row.name}" />
<pe:sheetcolumn
headerText="DCMS ID"
value="#{row.associatedLegacyProduct.leagcyProductId}"
colWidth="100"
sortBy="#{row.associatedLegacyProduct.leagcyProductId}"
filterBy="#{row.associatedLegacyProduct.leagcyProductId}"
colType="dropdown"
readOnly="true" />
<pe:sheetcolumn
headerText="FP Product Name"
value="#{row.fpProductName}"
colWidth="100"
sortBy="#{row.fpProductName}"
filterBy="#{row.fpProductName}"
colType="autocomplete"
autoCompleteStrict="false"
autoCompleteVisibleRows="4" />
<pe:sheetcolumn
headerText="PID"
value="#{row.processInstanceId}"
readOnly="true"
colWidth="100"
sortBy="#{row.processInstanceId}"
filterBy="#{row.processInstanceId}" />
<pe:sheetcolumn
headerText="Issuer"
value="#{row.issuer}"
colWidth="100" />
<pe:sheetcolumn
headerText="Processor"
value="#{row.processor}"
colWidth="100" />
<pe:sheetcolumn
headerText="Product Line"
value="#{row.productLine}"
colWidth="100" />
<pe:sheetcolumn
headerText="UPC"
value="#{row.upc}"
colWidth="100"
colType="numeric" />
<pe:sheetcolumn
headerText="Requester"
value="#{row.requester}"
colWidth="100" />
<pe:sheetcolumn
headerText="Country"
value="#{row.country}"
colWidth="100" />
<pe:sheetcolumn
headerText="Date Approved"
value="#{row.dateApproved}"
colWidth="100" />
<pe:sheetcolumn
headerText="Date Requested"
value="#{row.dateRequested}"
colWidth="100" />
</pe:sheet>
public void handleFileUpload(FileUploadEvent event) {
UploadedFile excelFile = event.getFile();
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy hh:mm a");
Random rand = new Random();
if (StringUtils.equalsIgnoreCase(FilenameUtils.getExtension(excelFile.getFileName()), "xls")) {
File tempFileForUploadedExcelFile = File.createTempFile("tempCopyOfExcel", ".xls");
FileUtils.copyInputStreamToFile(excelFile.getInputstream(), tempFileForUploadedExcelFile);
FileInputStream inputStreamForTempFile = new FileInputStream(tempFileForUploadedExcelFile);
HSSFWorkbook workbook = new HSSFWorkbook(inputStreamForTempFile);
HSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.rowIterator();
WorkflowProduct temp;
wpList = new ArrayList<>();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
if (row.getRowNum() != 0) {
temp = new WorkflowProduct();
Iterator<Cell> cellIterator = row.cellIterator();
temp.setName(cellIterator.next().getStringCellValue());
temp.setFpProductName(cellIterator.next().getStringCellValue());
temp.setProcessInstanceId(cellIterator.next().getStringCellValue());
temp.setIssuer(cellIterator.next().getStringCellValue());
temp.setProductLine(cellIterator.next().getStringCellValue());
temp.setProcessor(cellIterator.next().getStringCellValue());
temp.setUpc(cellIterator.next().getStringCellValue());
temp.setRequester(cellIterator.next().getStringCellValue());
temp.setCreator(cellIterator.next().getStringCellValue());
temp.setApprover(cellIterator.next().getStringCellValue());
String date1 = cellIterator.next().getStringCellValue();
String date2 = cellIterator.next().getStringCellValue();
temp.setDateApproved(format.parse(date1));
temp.setDateRequested(format.parse(date2));
temp.setCountry(cellIterator.next().getStringCellValue());
temp.setClassification(cellIterator.next().getStringCellValue());
temp.setType(cellIterator.next().getStringCellValue());
temp.setDenomType(cellIterator.next().getStringCellValue());
temp.setDenomValue(cellIterator.next().getStringCellValue());
temp.setFpProductLine(cellIterator.next().getStringCellValue());
temp.setFpProductType(cellIterator.next().getStringCellValue());
String value = cellIterator.next().getStringCellValue();
temp.setFpProductCode(StringUtils.isBlank(value) ? 0 : Integer.parseInt(value));
temp.setId(rand.nextInt());
wpList.add(temp);
}
}
Files.delete(tempFileForUploadedExcelFile.toPath());
inputStreamForTempFile.close();
workbook.close();
}