0

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

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

我试过了:

  • <rich:fileUpload>组件,但是对于这样简单的人员来说,它似乎是不必要的健壮,而且,它不能在 RF4 中返回绝对路径(只是文件名),既不是File对象,也不是FileUpload对象
  • <input type="file"/>但我不确定如何将所选文件的绝对路径传递给 bean(我只能传递一个名称 o 文件) - 有可能吗?
  • <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");
}

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

4

1 回答 1

1

您可以使用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();
   //...
}
于 2013-04-30T11:22:09.720 回答