Atualizar Campo via Ajax

Pessoal, em uma p:datatable selecionável, ao selecionar um linha, e preencher o input com o valor “quantidade”, devo atualizar o campo “Valor Total”. Porém esta dando erro.

Vou postar o código do xhtml, do bean e do stacktrace. Irei anexar também uma imagem da tela para vocês terem noção.

XHTML:

[code]

<h:head></h:head>

<h:form>

	<p:panelGrid columns="2">
      <f:facet name="header">BUSCAR TRECHO</f:facet>

		
Origem:		<h:selectOneMenu value="#{VooForm.voo.origemID}">
			<f:selectItem itemLabel="-- SELECIONE --" noSelectionOption="true"></f:selectItem>
			<f:selectItems value="#{VooForm.aeroportos}" var="aero"
				itemValue="#{aero.codigo}" itemLabel="#{aero.nome}"></f:selectItems>
		</h:selectOneMenu>

		
Destino:		<h:selectOneMenu value="#{VooForm.voo.destinoID}">
			<f:selectItem itemLabel="-- SELECIONE --" noSelectionOption="true"></f:selectItem>
			<f:selectItems value="#{VooForm.aeroportos}" var="aero"
				itemValue="#{aero.codigo}" itemLabel="#{aero.nome}"></f:selectItems>
		</h:selectOneMenu>


		
Data: <p:calendar value="#{VooForm.voo.partida}" id="popupButtonCal" showOn="button" pattern="dd/MM/yyyy" required="true" requiredMessage="Escolha uma data" />

<f:facet name=“footer”>
<p:commandButton value=“Buscar” action="#{VooForm.getTrechos}" update=":tabela"></p:commandButton>
</f:facet>

</p:panelGrid>
</h:form>

<p:outputLabel id="tabela">
<h:form>

<f:ajax event="keyup" update="total">
<p:dataTable value="#{VooForm.trechos}" var="trecho" rendered="#{VooForm.tabelaOk}" emptyMessage="Nenhum vôo encontrado!" selectionMode="single" selection="#{UsuarioForm.trechoSelecionado}" rowKey="#{trecho.codigo}" >



<p:column headerText="Vôo">
<h:outputText value="#{trecho.codigo}"></h:outputText>
</p:column>

<p:column headerText="Partida">
<h:outputText value="#{trecho.partida}">
<f:convertDateTime dateStyle="medium" type="both" pattern="dd/MM/yyyy hh:MM"></f:convertDateTime>
</h:outputText>
</p:column>

<p:column headerText="Preço">
<h:outputText value="#{trecho.preco}">
</h:outputText>
</p:column>


<f:facet name="footer">
<p:commandButton value="Comprar" action="#{UsuarioForm.comprarPassagem}"></p:commandButton>

Quantidade: <p:inputText id="quantidade" value="#{UsuarioForm.quantidadePassagem}"></p:inputText>
Total: <h:outputText id="total" value="#{UsuarioForm.valorTotal}"></h:outputText>

</f:facet>
</p:dataTable>
</f:ajax> 
</h:form>
</p:outputLabel>







</body>
[/code]

Bean UsuarioForm

[code]package forms;

import java.util.ArrayList;
import java.util.List;

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

import javax.persistence.EntityManager;
import javax.persistence.Query;

import org.primefaces.model.SelectableDataModel;

import persistence.JPAResourceBean;

import entities.Aeroporto;
import entities.Promocao;
import entities.Usuario;
import entities.Voo;

@ManagedBean(name = “UsuarioForm” )
@ViewScoped
public class UsuarioForm {

private Usuario usuario = new Usuario();
private Voo trechoSelecionado;
private int quantidadePassagem = 1;
private double valorTotal = 0;




public double getValorTotal() {
	return this.valorTotal = this.quantidadePassagem * this.trechoSelecionado.getPreco();
}


public void setValorTotal(double valorTotal) {
	this.valorTotal = valorTotal;
}





public void setValorTotal(int valorTotal) {
	this.valorTotal = valorTotal;
}


public int getQuantidadePassagem() {
	return quantidadePassagem;
}


public void setQuantidadePassagem(int quantidadePassagem) {
	this.quantidadePassagem = quantidadePassagem;
}




public Voo getTrechoSelecionado() {
	return trechoSelecionado;
}


public void setTrechoSelecionado(Voo trechoSelecionado) {
	this.trechoSelecionado = trechoSelecionado;
}


public Usuario getUsuario() {
	return usuario;
}


public void setUsuario(Usuario usuario) {
	this.usuario = usuario;
}


public String cadastrarUsuario(Usuario usuario){
	
	EntityManager em = JPAResourceBean.getEntityManager();
	
	try{
		
		em.getTransaction().begin();
		
		em.persist(usuario);
		
		em.getTransaction().commit();
		em.close();
	}
	
	catch(Exception e){
		
	e.printStackTrace();
	}
	
	return null;
}

public String cadastrarPromocao(Promocao promocao){

EntityManager em = JPAResourceBean.getEntityManager();

try{
	
	em.getTransaction().begin();
	
	em.persist(promocao);
	
	em.getTransaction().commit();
}

catch(Exception e){
	
e.printStackTrace();
}

return null;

}

public String fazerLogin(){

Usuario usu = null;
EntityManager em = JPAResourceBean.getEntityManager();
String jpql = "Select u from Usuario u where u.cpf = :login and u.senha = :senha";
Query q = em.createQuery(jpql, Usuario.class);
usu = (Usuario)q.setParameter("login", usuario.getCpf())
		.setParameter("senha", usuario.getSenha())
		.getSingleResult();

em.close();

if (usu != null) {
	FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("usuarioSessao", usu);
	
	if (usu.isAdmin() == true)
		return "adminPage";
	else
		return "usuarioPage";
} else {
	return null;
}

}

public void comprarPassagem(){

Usuario u = (Usuario)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuarioSessao");
System.out.println(u);

for (int i = 0; i < this.quantidadePassagem; i++) {
	u.getVoos().add(trechoSelecionado);
}

EntityManager em = JPAResourceBean.getEntityManager();
em.getTransaction().begin();
em.merge(u);
em.getTransaction().commit();
em.close();

}

/*public Voo getRowData(String rowKey) {
//In a real app, a more efficient way like a query by rowKey should be implemented to deal with huge data

List<Voo> trechos = (List<Voo>) getWrappedData();  
  
for(Voo v : trechos) {  
    if(v.getCodigo().equals(rowKey))  
        return v;  
}  
  
return null;  

} */

public String logout() {
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
return “index”;
}

}[/code]

StackTrace:

[code]Nov 29, 2013 11:12:57 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/buscarTrecho.xhtml]
javax.el.ELException: /buscarTrecho.xhtml @77,68 value="#{UsuarioForm.valorTotal}": Error reading ‘valorTotal’ on type forms.UsuarioForm
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIOutput.getValue(UIOutput.java:174)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
at org.primefaces.component.datatable.DataTableRenderer.encodeFacet(DataTableRenderer.java:883)
at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:218)
at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:83)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:70)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:57)
at org.primefaces.component.outputlabel.OutputLabelRenderer.encodeEnd(OutputLabelRenderer.java:93)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:559)
at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1729)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1740)
at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:399)
at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:319)
at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:57)
at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:1004)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1896)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:425)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.el.ELException: Error reading ‘valorTotal’ on type forms.UsuarioForm
at javax.el.BeanELResolver.getValue(BeanELResolver.java:98)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at org.apache.el.parser.AstValue.getValue(AstValue.java:183)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
… 52 more
Caused by: java.lang.NullPointerException
at forms.UsuarioForm.getValorTotal(UsuarioForm.java:36)
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 javax.el.BeanELResolver.getValue(BeanELResolver.java:87)
… 57 more

Nov 29, 2013 11:12:57 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/TrabalhoTI2] threw exception
java.lang.IllegalStateException: CDATA tags may not nest
at com.sun.faces.renderkit.html_basic.HtmlResponseWriter.startCDATA(HtmlResponseWriter.java:681)
at javax.faces.context.ResponseWriterWrapper.startCDATA(ResponseWriterWrapper.java:179)
at javax.faces.context.PartialResponseWriter.startError(PartialResponseWriter.java:341)
at org.primefaces.context.PrimePartialResponseWriter.startError(PrimePartialResponseWriter.java:156)
at com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:202)
at com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:126)
at javax.faces.context.ExceptionHandlerWrapper.handle(ExceptionHandlerWrapper.java:100)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)[/code]

Obrigado pela atenção!