У меня есть лица javax.faces.el.EvaluationException: java.lang.NullPointerException - PullRequest
0 голосов
/ 07 ноября 2011

Я использую jsf2.0 с tomcat7 в eclipse ide. Я просто делаю обрезку изображения, когда я обрезаю изображение и отправляю форму, в моем коде есть ошибка. Я не знаю, где я структура. *

Моя страница просмотра:

<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>

Бэк-боб:

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>

1 Ответ

1 голос
/ 07 ноября 2011

Ваши ссылки на управляемый компонент неверны.Используйте 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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...