gpt4 book ai didi

java - Primefaces 数据表部分页面渲染不适用于

转载 作者:行者123 更新时间:2023-12-01 15:35:43 27 4
gpt4 key购买 nike

我有一个 p:fileUpload 工作正常。但我需要在上传新文件后对 p:datatable 进行部分页面渲染。数据表显示当前文件。

奇怪的是,一旦我上传一个文件,表格就会重新呈现,显示一条记录。但是第二次该表没有重新呈现,尽管代码显示有 2 个条目。这让我大吃一惊,我花了一整天的时间试图让它发挥作用。目前我有一个使用 ui:repeat 的解决方法。

这是代码

    <h:outputLabel value="Files Upload" style="font-weight: bold;" />
<p:fieldset>

<p:fileUpload id="iconUpload" update="@form"
fileUploadListener="#{appCreateController.processUpload}"
image="/resources/gfx/file_browse_normal.png"
allowTypes="*.jpg;*.png;*.gif;*.doc;*.exe;*.msi"
description="Icon">
</p:fileUpload>

</p:fieldset>
<p:message for="iconUpload" />

<p:dataTable var="appFile" id="appFiles"
value="#{appCreateController.uploadedFiles}" rows="10">
<p:column>
<f:facet name="header">
<h:outputText value="Name" />
</f:facet>
<h:outputText value="#{appFile.uploadedFile.fileName}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Content Type" />
</f:facet>
<h:outputText value="#{appFile.uploadedFile.contentType}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="File Type" />
</f:facet>
<h:selectOneMenu value="#{appFile.uploadedFileType}" id="fileType">
<f:selectItems var="uploadedFileType"
value="#{appCreateController.uploadedFileTypes}"
itemLabel="#{uploadedFileType.name}" />
</h:selectOneMenu>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Size" />
</f:facet>
<h:outputText value="#{appFile.size}" />
</p:column>
</p:dataTable>

支持 bean 代码:

    public void processUpload(FileUploadEvent event)
throws AbortProcessingException {

log.debug("Uploading file: " + event.getFile().getFileName());

UploadedFileVO uploadedFileVO = new UploadedFileVO();
uploadedFileVO.setUploadedFile(event.getFile());

uploadedFiles.add(uploadedFileVO);

log.debug("Uploaded file: " + event.getFile().getFileName());

log.debug("file list now contains file : " + uploadedFiles.size());
}

public List<UploadedFileVO> getUploadedFiles() {

log.debug("Getting uploadedFiles. Total == " + uploadedFiles.size());

return uploadedFiles;
}


public UploadedFileType[] getUploadedFileTypes() {
return UploadedFileType.values();
}

希望有人知道解决方案:)

干杯,科恩

最佳答案

好的,我尝试使用 2.2.1,并针对此问题升级到 3.0.1。 3.0.1 仍然存在该问题,但现已修复。

显然,JSF 引擎没有看到数据表的内容发生了变化,因为已经通过支持 bean 中的另一个方法调用了 getter。

我有另一种方法,它在 xhtml 页面之前调用 getUploadedFiles() ,不知何故,这影响了数据表的重新填充。

关于java - Primefaces 数据表部分页面渲染不适用于 <p :fileUpload>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8883249/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com