Java Web - JSf com Primefaces e JPA

0 respostas
G

Esta ocorrendo este erro quando clico no botão salvar capitulo.

Console

ago 02, 2016 9:53:29 PM com.sun.faces.lifecycle.InvokeApplicationPhase execute
ADVERTÊNCIA: #{cadastrarCursoBean.salvarCapitulo}: java.lang.NullPointerException
javax.faces.FacesException: #{cadastrarCursoBean.salvarCapitulo}: java.lang.NullPointerException
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1419)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:44)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	... 29 more
Caused by: java.lang.NullPointerException
	at sun.nio.fs.WindowsPathParser.parse(Unknown Source)
	at sun.nio.fs.WindowsPathParser.parse(Unknown Source)
	at sun.nio.fs.WindowsPath.parse(Unknown Source)
	at sun.nio.fs.WindowsFileSystem.getPath(Unknown Source)
	at java.nio.file.Paths.get(Unknown Source)
	at br.com.caelum.livraria.bean.CadastrarCursoBean.salvarCapitulo(CadastrarCursoBean.java:79)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
	... 30 more

ago 02, 2016 9:53:29 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
GRAVE: javax.faces.el.EvaluationException: java.lang.NullPointerException
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1419)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:44)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
	at sun.nio.fs.WindowsPathParser.parse(Unknown Source)
	at sun.nio.fs.WindowsPathParser.parse(Unknown Source)
	at sun.nio.fs.WindowsPath.parse(Unknown Source)
	at sun.nio.fs.WindowsFileSystem.getPath(Unknown Source)
	at java.nio.file.Paths.get(Unknown Source)
	at br.com.caelum.livraria.bean.CadastrarCursoBean.salvarCapitulo(CadastrarCursoBean.java:79)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
	... 30 more

cadastrarCurso.xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://xmlns.jcp.org/jsf/html"
	xmlns:f="http://xmlns.jcp.org/jsf/core"
	xmlns:p="http://primefaces.org/ui"
	xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

<ui:composition template="_templateProfessor.xhtml">

	<ui:define name="titulo">
		<p:outputPanel>Cadastrar Curso</p:outputPanel>
	</ui:define>

	<ui:define name="conteudo">

		<p:messages globalOnly="true" />

		<h:form id="cadastrarCurso" enctype="multipart/form-data">
			<p:fieldset legend="Dados do Curso">
				<h:panelGrid columns="3">

					<p:outputLabel value="Titulo" for="titulo" />

					<p:outputLabel value="Descrição" for="descricao" />

					<p:outputLabel value="Preço" for="preco" />

					<p:inputText id="titulo" value="#{cadastrarCursoBean.curso.titulo}" />

					<p:inputText id="descricao"
						value="#{cadastrarCursoBean.curso.descricao}" />

					<p:inputText id="preco" value="#{cadastrarCursoBean.curso.valor}" />

				</h:panelGrid>
			</p:fieldset>

			<p:fieldset legend="Capitulos">
				<h:panelGrid columns="4">

					<p:outputLabel value="Titulo do Capitulo:" for="tituloCapitulo" />

					<p:inputText id="tituloCapitulo"
						value="#{cadastrarCursoBean.capitulo.titulo}" />

					<p:fileUpload mode="advanced"
						fileUploadListener="#{cadastrarCursoBean.upload}" />

					<p:commandButton value="Salvar Capitulo"
						action="#{cadastrarCursoBean.salvarCapitulo}" update="@form"
						process="@form" />

				</h:panelGrid>
			</p:fieldset>
			<p:dataList id="listaCapitulos"
				value="#{cadastrarCursoBean.capitulos}" var="capitulo"
				type="definition">
				<f:facet name="header">
            		Capitulos
        		</f:facet>
        		#{capitulo.titulo}
        		
        		<p:commandButton icon="fa fa-fw fa-edit"
					actionListener="#{cadastrarCursoBean.alterar(capitulo)}"
					update="@form" process="@this" />

				<p:commandButton icon="fa fa-fw fa-remove"
					action="#{cadastrarCursoBean.remover(capitulo)}" update="@form"
					process="@this" />
			</p:dataList>

		</h:form>
	</ui:define>

</ui:composition>

</html>

CadastrarCursoBean.class

package br.com.caelum.livraria.bean;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
import org.primefaces.model.UploadedFile;

import br.com.caelum.livraria.dao.CapituloDao;
import br.com.caelum.livraria.dao.CursoDao;
import br.com.caelum.livraria.dao.VideoAulaDao;

import br.com.caelum.livraria.modelo.Capitulo;
import br.com.caelum.livraria.modelo.Curso;
import br.com.caelum.livraria.modelo.VideoAula;

@ManagedBean
@ViewScoped
public class CadastrarCursoBean {

	private Curso curso = new Curso();

	private VideoAula videoAula = new VideoAula();

	private Capitulo capitulo = new Capitulo();

	private List<Capitulo> capitulos = new ArrayList();

	private UploadedFile arquivo;

	public UploadedFile getArquivo() {
		return arquivo;

	}

	public void setArquivo(UploadedFile arquivo) {
		this.arquivo = arquivo;
	}

	public Capitulo getCapitulo() {
		return capitulo;
	}

	public void setCapitulo(Capitulo capitulo) {
		this.capitulo = capitulo;
	}

	public void upload(FileUploadEvent evento) {
		try {
			UploadedFile arquivo = evento.getFile();
			videoAula.setNomeVideo(arquivo.getFileName());
			Path arquivoTemp = Files.createTempFile(null, null);
			Files.copy(arquivo.getInputstream(), arquivoTemp, StandardCopyOption.REPLACE_EXISTING);
			videoAula.setCaminho(arquivoTemp.toString());
		} catch (IOException erro) {
			erro.printStackTrace();
		}

	}

	public void salvarCapitulo() {
		try {
			if (this.capitulo.getId() == null) {
				Path origem = Paths.get(videoAula.getCaminho());
				System.out.println(videoAula.getCaminho());
				Path destino = Paths.get("C:/Users/Gabriel-gbr/workspace/Elearning/WebContent/resources/videoAulas/"
						+ videoAula.getNomeVideo());
				Files.copy(origem, destino, StandardCopyOption.REPLACE_EXISTING);

				new VideoAulaDao().adiciona(videoAula);

				capitulo.setVideoAula(videoAula);
				new CapituloDao().adiciona(capitulo);

				capitulos.add(capitulo);

				this.videoAula = new VideoAula();
				this.capitulo = new Capitulo();

			} else {
				Path origem = Paths.get(videoAula.getCaminho());
				System.out.println(videoAula.getCaminho());
				Path destino = Paths.get("C:/Users/Gabriel-gbr/workspace/Elearning/WebContent/resources/videoAulas/"
						+ videoAula.getNomeVideo());
				Files.copy(origem, destino, StandardCopyOption.REPLACE_EXISTING);

				System.out.println(this.capitulo.getId());

				System.out.println(this.videoAula.getId());

				new VideoAulaDao().atualiza(videoAula);

				this.capitulo.setVideoAula(videoAula);
				new CapituloDao().atualiza(capitulo);

				int index = capitulos.indexOf(capitulo);
				capitulos.remove(index);
				capitulos.add(capitulo);

				System.out.println(capitulos.size());

				this.videoAula = new VideoAula();
				this.capitulo = new Capitulo();

			}

		} catch (IOException erro) {
			erro.printStackTrace();
		}

	}

	public void alterar(Capitulo capitulo) {
		this.capitulo = capitulo;
		this.videoAula = capitulo.getVideoAula();
	}

	public void remover(Capitulo capitulo) {
		new CapituloDao().remove(capitulo);
		capitulos.remove(capitulo);
	}

	public void cadastrarCurso() {
		if (!capitulos.isEmpty()) {
			new CursoDao().adiciona(this.curso);

		} else {
		}
	}

	public VideoAula getVideoAula() {
		return videoAula;
	}

	public void setVideoAula(VideoAula videoAula) {
		this.videoAula = videoAula;
	}

	public List<Capitulo> getCapitulos() {
		return capitulos;
	}

	public void setCapitulos(List<Capitulo> capitulos) {
		this.capitulos = capitulos;
	}

	public Curso getCurso() {
		return curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}

}
Criado 3 de agosto de 2016
Respostas 0
Participantes 1