繁体   English   中英

我遇到了javax.faces.el.E​​valuationException:java.lang.NullPointerException

[英]I have faces the javax.faces.el.EvaluationException: java.lang.NullPointerException

我在eclipse ide中将jsf2.0与tomcat7一起使用。我刚刚进行了图像裁剪,当我裁剪图像并提交表单时,我的代码中有错误。我不知道我在哪里。

我的查看页面是:

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<script src="jquery-1.4.2.js"></script>
<script src="jquery.Jcrop.js"></script>
<script src="jquery.min.js"></script>
<script src="jquery.Jcrop.min.js"></script>

</h:head>
<h:body>
<h:form>  
<h:panelGrid columns="2">  
    <p:imageCropper  value="#{imageCropperBean.croppedImage}"  
                image="/detroit-nights.jpg"                     />  
     <p:graphicImage id="localCroppedImage"  
                value="#{imageCropperBean.newFileName}.jpg" />  

</h:panelGrid>  

<p:commandButton value="Crop"  
      update="localCroppedImage"  action="#{imageCrop.crop}"  
            />  


</h:form>  
</h:body>
</html>

Backing Bean是:

package bean;



import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.imageio.stream.FileImageOutputStream;
import javax.servlet.ServletContext;

import org.primefaces.model.CroppedImage;

@ManagedBean (name ="imageCrop")
@RequestScoped
public class ImageCropperBean {

    private CroppedImage croppedImage;
    private String newFileName;


    public String getNewFileName() {
        return newFileName;
    }

    public void setNewFileName(String newFileName) {
        this.newFileName = newFileName;
    }

    public CroppedImage getCroppedImage() {
            return croppedImage;
    }

    public void setCroppedImage(CroppedImage croppedImage) {
        System.out.println("cRRRRRRRRRRRRR"+croppedImage);
            this.croppedImage = croppedImage;
    }

    public String crop() {
        System.out.println("WELCOMEMMMMMMMMMMMMMM");
            ServletContext servletContext = (ServletContext)   FacesContext.getCurrentInstance().getExternalContext().getContext();
             newFileName = servletContext.getRealPath("") + File.separator +"croppedImage.jpg";
            System.out.println("FILE ANE"+newFileName);

            FileImageOutputStream imageOutput;
            try {   
                    //File file = new File(newFileName);
                    imageOutput = new FileImageOutputStream(new File(newFileName));
                    System.out.println("HHHHHHHHHH=="+imageOutput);
                    imageOutput.write(croppedImage.getBytes(), 0,  croppedImage.getBytes().length);
                    imageOutput.close();
            } catch (FileNotFoundException e) {
                System.out.println("NOT FOUND EXCEPTION"+e);
                    e.printStackTrace();
            } catch (IOException e) {
                System.out.println("IOEXCEPTION"+e);
                    e.printStackTrace();
            }
            //return newFileName;
            return null;


            }
}

web.xml是:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee /web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<context-param>
<description>Context param for JSTL 1.2 to work in Tomcat 6 sun RI
</description>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
<context-param>
<description>Parameter required by Mojarra 2.0</description>
<param-name>com.sun.faces.allowTextChildren</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name>
<param-value>true</param-value>
</context-param>
<servlet>
<servlet-name>Resource Servlet</servlet-name>
<servlet-class>
    org.primefaces.resource.ResourceServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Resource Servlet</servlet-name>
<url-pattern>/primefaces_resource/*</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
<init-param>
  <param-name>thresholdSize</param-name>
  <param-value>2097152</param-value>
</init-param>
<init-param>
  <param-name>uploadDirectory</param-name>
  <param-value>/temp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>image.xhtml</welcome-file>
</welcome-file-list>

</web-app>

您对托管bean的引用是错误的。 使用name写在了name的属性@ManagedBean注解。

因此,请替换:

<p:imageCropper  value="#{imageCropperBean.croppedImage}"  
                image="/detroit-nights.jpg"                     />  
<p:graphicImage id="localCroppedImage"  
                value="#{imageCropperBean.newFileName}.jpg" /> 

<p:imageCropper  value="#{imageCrop.croppedImage}"  
                image="/detroit-nights.jpg"                     />  
<p:graphicImage id="localCroppedImage"  
                value="#{imageCrop.newFileName}.jpg" />  

(您对p:commandButton正确地做到了)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM