1

我的一个 jsf 页面中有一个简单的文件上传机制。文件上传后,我会触发一个 ActionListener。此时,我可以访问用户上传的文件的名称,并且我想将其添加到 outputText 组件中。如何从 java 代码重新呈现表单以显示文件?我可以调用一些ajax函数吗?

/**
 * Called when a file is uploaded
 * @param event The FileUploadEvent that contains info on the file uploaded
 */
public void handleFileUpload(FileUploadEvent event){ 
    data = event.getFile().getContents();
    name = event.getFile().getFileName();
}

以上是文件上传后运行的代码。你可以看到我得到了文件的名称。我现在需要重新渲染 outputText 以便显示名称。

4

1 回答 1

2

这通常要在视图端声明。

即使您没有提及它(这很糟糕;您应该始终在问题中提及您正在使用的 JSF 实现和组件库,并且确保不要将所有内容过度概括为“标准 JSF”),侦听器方法代码您可以将其识别为 PrimeFaces 特有的一种<p:fileUpload>

在这种情况下,您实际上应该使用组件自己的update属性,该属性应该引用您希望在完成 ajax 请求时更新的组件的(相对)客户端 ID。

<p:fileUpload ... update="text" />
...
<h:outputText id="text" value="#{bean.text}" />

就这样。在此特定示例中,您只需将文件名分配给text属性。

也可以看看:

于 2012-11-17T03:58:34.773 回答