我的一个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以便显示名称。
答案 0 :(得分:2)
这通常在视图方面声明。
即使你没有提到任何关于它的事情(这很糟糕;你应该总是在问题中提到你正在使用的JSF实现和组件库,并且肯定不会将所有内容过度概括为“标准JSF”),您在那里的侦听器方法代码可以被识别为PrimeFaces <p:fileUpload>
特有的代码。
在这种情况下,您实际上应该使用组件自己的update
属性,该属性应该在完成ajax请求时引用您要更新的组件的(相对)客户端ID。
<p:fileUpload ... update="text" />
...
<h:outputText id="text" value="#{bean.text}" />
这就是全部。您在此特定示例中只需将文件名分配给text
属性。
<p:fileUpload>
VDL documentation - 列出所有可用的属性。