使用jsf导入文件时无法访问目标

使用jsf导入文件时无法访问目标,jsf,primefaces,Jsf,Primefaces,我是JavaEE开发新手,对此我真的很困惑。事实上,我想使用jsf导入文件并将该文件保存在一个目录中,但我总是得到无法访问的目标。这是我的豆子: @ManagedBean @RequestScoped public class Import_2G { //@EJB //private GestionCellRef2GLocal gestionCellRef2GLocal; private UploadedFile uploadedFile; public

我是JavaEE开发新手,对此我真的很困惑。事实上,我想使用jsf导入文件并将该文件保存在一个目录中,但我总是得到无法访问的目标。这是我的豆子:

@ManagedBean
@RequestScoped

public class Import_2G {

    //@EJB
    //private GestionCellRef2GLocal gestionCellRef2GLocal;

    private UploadedFile uploadedFile;

    public void save() throws IOException {
        //GestionCellRef2GRemote t = null;

        Path folder = Paths.get("C:\\Upload");
        String filename = FilenameUtils.getBaseName(uploadedFile.getFileName());
        String extension = FilenameUtils.getExtension(uploadedFile.getFileName());
        Path file = Files.createTempFile(folder, filename + "-", "." + extension);
        //try (InputStream input = uploadedFile.getInputstream()) {
          //  Files.copy(input, folder, StandardCopyOption.REPLACE_EXISTING);
            if (file != null) {
                FacesMessage message = new FacesMessage("Succesful", file.getFileName() + " was uploaded.");
                FacesContext.getCurrentInstance().addMessage(null, message);
            }


}
}
这是xhtml文件:

   <ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:jsf="http://xmlns.jcp.org/jsf"
    xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"
    xmlns:p="http://primefaces.org/ui"
    template="/WEB-INF/template/template.xhtml">
<ui:define name="title">2G</ui:define>


    <ui:define name="content">
    <h:form>

    <h1> <font color="orange" size="7" > 2G</font></h1> 


    </h:form>
    <h2 >Choose 2 files </h2>
    <h:form>
            <p:fileUpload fileUploadListener="#{Import_2G.save()}"
                mode="advanced" dragDropSupport="true" update="messages"
                sizeLimit="100000000000" allowTypes="/(\.|\/)(xls)$/" />

            <p:growl id="messages" showDetail="true" />
        </h:form>
    </ui:define>
</ui:composition>

2G
2G
选择2个文件
这是我得到的错误:

警告[javax.enterprise.resource.webcontainer.jsf.lifecycle](默认任务-55)/admin/2g.xhtml@23,61 fileUploadListener=“#{Import_2g.save()}”:目标不可访问,标识符“Import_2g”解析为null:javax.el.PropertyNotFoundException:/admin/2g.xhtml@23,61 fileUploadListener=“#{Import_2g.save()”:目标不可访问,标识符“Import_2G”已解析为空


首先在managedBean中添加名称

@ManagedBean(name="import_2G")
@RequestScoped
public class Import_2G{
   ......
    ......
   ......
}
然后在jsf/xhtml页面中使用这个名称访问它

<p:fileUpload fileUploadListener="#{import_2G.save()}"
                mode="advanced" dragDropSupport="true" update="messages"
                sizeLimit="100000000000" allowTypes="/(\.|\/)(xls)$/" />
但是在这种情况下,如果您在jsf页面中访问(变量/方法),请使用
import_2G
而不是
import_2G

@如果未指定ManagedBean,则将默认使用托管bean名称 到完全限定类名的类名部分。在这种情况下 这将是进口2G


像这样尝试
fileUploadListener=“#{import_2G.save()}”
视图层中托管bean的默认名称是小写的第一个字母,这就是为什么它应该是
“#{import_2G.save()}”
。谢谢,所有无法访问目标的问题都得到了解决,但我得到了这个>警告[javax.enterprise.resource.webcontainer.jsf.lifecycle](默认任务-13)/admin/2g.xhtml'@23,61'fileUploadListener=“#{import_2g.save()}”:java.lang.NullPointerException:javax.el.ELException:/admin/2g.xhtml'@23,61'fileUploadListener=“#{import_2g.save()}”:java.lang.NullPointerException并且我没有在C中找到上传的文件:/Upload any idea guys?这意味着
import\u 2G
现在是空的,我想你可以找出它为什么是空的或者为什么没有初始化。这不是同一个问题,所以你应该用适当的例子问另一个问题
@ManagedBean
@SessionScoped
public class Import_2G{
...
}