我正在尝试在支持bean中创建一个openfiledialog,以便我可以获取本地文件的url。但是,标准JSF库似乎不支持打开/保存文件对话框。是否有另一种方法来获取类似于openfiledialog的文件的URL?
以下是必须发生的事情: 点击按钮 - >将动作发送到辅助bean - > 显示openfiledialog - >获取文件的网址 - >将文件的url添加到字符串列表中。
我不确定如何完成上面的大胆步骤。是否有人可以给我任何线索或帮助实现这一目标?
(我使用的是JSF& Primefaces,如果可能,我宁愿不使用其他外部库。)
答案 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
你只需要打开一个包含文件链接的对话框,或者也可以将文件url存储在变量中以添加到列表或者你想要的内容。
希望这会对你有所帮助。