【问题标题】:How to render parts of form from ActionListener in JSF如何在 JSF 中从 ActionListener 呈现表单的一部分
【发布时间】:2012-11-17 03:40:59
【问题描述】:

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

【问题讨论】:

    标签: java ajax jsf


    【解决方案1】:

    这通常要在视图端声明。

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

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

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

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

    另见:

    【讨论】:

    • 太棒了,我很感激。我一直在阅读 Primefaces 文档,但还有很多东西要完成。如果你不知道,我是 JSF 的新手 :) 所以我一定不要过度概括我的问题。再次感谢。
    • 无论如何你也可以帮助解决这个问题。我有一种感觉,这与我对 ActionListener 在 JSF 生命周期中的工作方式的理解有关。 stackoverflow.com/questions/13432767/…
    猜你喜欢
    • 2012-04-19
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多