jsf - 使用 RichFaces 上传文件

标签 jsf jakarta-ee richfaces facelets

我目前正在寻找一些使用 Java Server Faces 上传的文件。我找到了 this great introduction它使用 RichFaces。但是,我在理解这里的过程时遇到了一些麻烦。

首先,用户选择一个文件,如果将立即上传设置为 true,则使用 ajax 处理该文件,到目前为止一切顺利。然而,当涉及到下一步时,Bean 端的监听器让我感到困惑:

public void listener(UploadEvent event) throws Exception{
    UploadItem item = event.getUploadItem();

    File f = item.getFile();

    System.out.println(f.getAbsolutePath());
}

绝对路径是我计算机上的临时目录,我当然理解这一点,但是您如何使该文件可用于 webb 应用程序?我的应用程序部署为 WAR 文件。是否可以将其上传到 WAR 中?可能听起来很愚蠢,但它实际上可能很方便。

我完全知道我可以重命名文件以将其复制到新位置,但这是要走的路吗?

最佳答案

将内容写入您的 WAR 目录(假设 WAR 甚至分解为目录)通常是一个坏主意(出于同样的原因,将数据存储在应用程序目录中通常是一个坏主意)。

您可能希望它最终出现在一个持久性存储中,通常是一个数据库。究竟如何管理取决于您 - 是使用文件系统并在数据库中存储引用还是直接在数据库中存储 BLOB,以及是否使用 JDBC、JPA 或 Hibernate 等。

然后可以通过使用类似 <a4j:support event="onuploadcomplete" reRender="info" /> 的内容刷新包含它们的面板来从数据库中读取上传文件的列表。 .

文件下载 servlet(如果 RichFaces 没有)很容易编写。

关于jsf - 使用 RichFaces 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1605758/

相关文章:

jsf - 查看两个不同 portlet 之间的导航?

css - JSF 富 :datatable column display very long text in multiple lines

java - CommandLink 导航在 JSF 中不起作用

java - 如何将 JSF 组件绑定(bind)到支持 bean 属性

java - 从 Netbeans 6+ 中的 WAR 文件中排除文件夹

java - 将文本字段值发送到不带表单标记的服务器

css - rich 中的列宽 :datatable

java - 当用户篡改表单提交时显示异常的 JSF 错误页面

java - 理解托管 beans/backing beans

javascript - JavaScript 中的 JSF 资源包参数?