java - JSF 组件 - IN : pick file from server; OUT: file path only

标签 java jsf richfaces

我需要找到一些非常紧凑的组件,它允许我:

  • 选择文件系统中的文件
  • 获取其绝对路径(或文件本身)

我已经尝试过:

  • <rich:fileUpload>组件,但对于如此简单的人员来说,它似乎不必要地强大,而且,它也不能返回 RF4 中的绝对路径(仅文件名) File反对但FileUpload对象
  • <input type="file"/>但我不确定如何将所选文件的绝对路径传递给bean(我只能传递文件名) - 这可能吗?
  • <p:fileUpload><t:inputFileUpload>也有点问题

注释:

  • 用户始终直接在服务器上工作(没有客户端)- localhost (该应用程序是三层,但仅适用于一个用户)
  • 我正在使用richfaces 4

解决这个问题的最佳或最紧凑的做法是什么?

更新(部分解决方案)

<h:commandLink value="fire" action="#{bean.action}"/>
<input type="file" id="fileName" name="fileName"/>

public void action() {
  HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
  fileName = request.getParameter("fileName");
}

但仍然没有绝对路径...

最佳答案

您可以使用fileUploadfileUploadListener属性。例如

<rich:fileUpload fileUploadListener="#{managedBean.onFileUpload}"/>

如果您使用的是 RichFaces 3.*:

这需要在托管 bean 中实现一个方法,其签名必须与 void onFileUpload(org.richfaces.event.UploadEvent event) 匹配。通过引用 org.richfaces.event.UploadEvent 对象,您可以检索文件的绝对路径。像这样:

public void onFileUpload(UploadEvent event) {
   //...
   File file = event.getFile();
   String absolutePath = file.getAbsolutePath();
   //...
}

如果您使用的是 Rich Faces 4.*:

这需要在托管 bean 中实现一个方法,其签名必须与 void onFileUpload(org.richfaces.event.FileUploadEvent event) 匹配。通过引用 org.richfaces.event.FileUploadEvent 对象,您可以检索文件的绝对路径。像这样:

public void onFileUpload(FileUploadEvent event) {
   //...
   File file = event.getUploadedFile();
   String absolutePath = file.getAbsolutePath();
   //...
}

关于java - JSF 组件 - IN : pick file from server; OUT: file path only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16298367/

相关文章:

java - 如何仅使用一个连接在 hibernate 中执行嵌套事务?

java - Gradle:作为文件读取有效,但不能作为资源读取

java - Netbeans 中 jtextpane 中的行号

html - 如何为h :selectManyListbox设置边框和滚动条颜色

mysql - 在 JSF 数据表中显示来自 MySQL 数据库的图像

jsf - 如何呈现一个特定节点已经展开的 RichFaces 树

java - JGraphT - 将 BFS 应用于 WeightedGraph

java - 如何在特定时间发送电子邮件?

java - Richfaces:带有 ContextMenu 的链接式文本

apache - 集群环境中的故障​​转移不适用于 JSF 2、Richfaces 4、Tomcat 7