如何在JSF中从ActionListener呈现表单的一部分

时间:2012-11-17 03:41:00

标签: java ajax jsf

我的一个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以便显示名称。

1 个答案:

答案 0 :(得分:2)

这通常在视图方面声明。

即使你没有提到任何关于它的事情(这很糟糕;你应该总是在问题中提到你正在使用的JSF实现和组件库,并且肯定不会将所有内容过度概括为“标准JSF”),您在那里的侦听器方法代码可以被识别为PrimeFaces <p:fileUpload>特有的代码。

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

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

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

另见: