PrimeFaces Fileupload返回“servlet Faces Servlet抛出异常”

时间:2013-12-22 17:58:48

标签: java hibernate jsf servlets primefaces

我正在使用PF 4.0,Glassfish 3,JSF和Hibernate。我尝试使用primefaces fileupload将图像上传到数据库。当我运行我的代码并调用方法上传时,我收到此错误:

SEVERE: java.lang.NullPointerException
        at bean.imageUpload.handleFileUpload(imageUpload.java:47)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.sun.el.parser.AstValue.invoke(AstValue.java:234)
        at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
        at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98)
        at org.primefaces.component.fileupload.FileUpload.broadcast(FileUpload.java:290)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:740)
        at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:943)
        at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:95)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
        at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
        at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:662)

这是我的完整代码。希望有人建议我。谢谢。

XHTML

<h:form enctype="multipart/form-data">
    <p:fileUpload fileUploadListener="#{imageUpload.handleFileUpload}" mode="advanced" dragDropSupport="false"
                  update="messages" sizeLimit="100000" fileLimit="3" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />
    <p:growl id="messages" showDetail="true"/>
</h:form>

bean imageUpload(sessionscoped)

public class imageUpload implements Serializable {

private Products seletedproduct;
private List<Products> product;

/** Creates a new instance of imageUpload */
public imageUpload() {
}

public Products getSeletedproduct() {
    return seletedproduct;
}

public void setSeletedproduct(Products seletedproduct) {
    this.seletedproduct = seletedproduct;
}

public void handleFileUpload(FileUploadEvent event) throws IOException {

    UploadedFile file = event.getFile();
    System.out.println(file.getFileName());

    byte[] img = org.apache.commons.io.IOUtils.toByteArray(file.getInputstream());

    System.out.println(img);

    try {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        seletedproduct.setImage(img);
        session.beginTransaction().begin();
        session.save(seletedproduct);
        session.getTransaction().commit();
        session.close();
        System.out.println("Saved Successfully");
    } catch (Exception e) {
        e.printStackTrace();
    }
}
}

的web.xml

<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

0 个答案:

没有答案