我想知道 JSF 或 primefaces 中是否有可能允许在 JSF 页面上输入列的所有值(例如来自 excel)并将其提交给托管 bean。这意味着在托管 bean 的列表中获取值。
我设计这个图是为了让你明白我的意思:
你知道我们该怎么做吗?
我想知道 JSF 或 primefaces 中是否有可能允许在 JSF 页面上输入列的所有值(例如来自 excel)并将其提交给托管 bean。这意味着在托管 bean 的列表中获取值。
我设计这个图是为了让你明白我的意思:
你知道我们该怎么做吗?
是的,有一种可能。以下是所涉及的必要步骤。
使用例如<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);
}
}
}
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;
}
通过标准 JSF 重新显示数据意味着:将检索到的列表绑定到某个迭代组件,对其进行 ajax 更新等。