在JSF 2.2中获取文件URL

时间:2014-11-19 09:08:40

标签: jsf-2 primefaces openfiledialog

我正在尝试在支持bean中创建一个openfiledialog,以便我可以获取本地文件的url。但是,标准JSF库似乎不支持打开/保存文件对话框。是否有另一种方法来获取类似于openfiledialog的文件的URL?

以下是必须发生的事情: 点击按钮 - >将动作发送到辅助bean - > 显示openfiledialog - >获取文件的网址 - >将文件的url添加到字符串列表中。

我不确定如何完成上面的大胆步骤。是否有人可以给我任何线索或帮助实现这一目标?

(我使用的是JSF& Primefaces,如果可能,我宁愿不使用其他外部库。)

2 个答案:

答案 0 :(得分:1)

由于您使用的是JSF 2.2以及Primefaces,为什么不使用primefaces组件呢?

以下是基本文件上传的Primefaces 5.0 showcase example

<h:form enctype="multipart/form-data">
    <p:growl id="messages" showDetail="true" />

    <p:fileUpload value="#{fileUploadView.file}" mode="simple" skinSimple="true"/>

    <p:commandButton value="Submit" ajax="false" actionListener="#{fileUploadView.upload}" disabled="true" />
</h:form>

托管Bean

import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

@ManagedBean
public class FileUploadView {

    private UploadedFile file;

    public UploadedFile getFile() {
        return file;
    }

    public void setFile(UploadedFile file) {
        this.file = file;
    }

    public void upload() {
        if(file != null) {
            FacesMessage message = new FacesMessage("Succesful", file.getFileName() + " is uploaded.");
            FacesContext.getCurrentInstance().addMessage(null, message);
        }
    }
}

表单的enctype属性是必需的。此外,要使用Primefaces文件上传,您需要设置某些上下文参数和过滤器。您可以参考相应的documentation

答案 1 :(得分:0)

您可以获取上传到路径或数据库的文件的网址,不确定您是否在谷歌搜索,但我发现这些网址可能会对您有所帮助:

http://balusc.blogspot.com/2007/07/fileservlet.html

Download a file with JSF?

你只需要打开一个包含文件链接的对话框,或者也可以将文件url存储在变量中以添加到列表或者你想要的内容。

希望这会对你有所帮助。