Pessoal..
Estou começando a estudar um pouco de JSF e me deparei com um probleminha... eu quero converter um valor em real para dolar.. por exemplo, mas quando eu clico no botao para executar a action esta dando nullPointer
XHTML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
</h:head>
<h:body>
<h:form>
<h:commandButton value="Converter" action="#{conversorMonetarioBean.converte}"/>
<h:inputText value="#{conversorMonetarioBean.de}"/>
<h:outputLabel value="de" for="de"/>
<h:selectOneMenu value="conversorMonetarioBean.de" id="de">
<f:selectItems value="#{conversorMonetarioBean.taxas}" var="moeda" itemValue="#{moeda}" itemLabel="#{moeda}"/>
</h:selectOneMenu>
<h:outputLabel value="para" for="para"/>
<h:selectOneMenu value="#{conversorMonetarioBean.para}" id="para">
<f:selectItems value="#{conversorMonetarioBean.taxas}" var="moeda" itemValue="#{moeda}" itemLabel="#{moeda}"/>
</h:selectOneMenu>
</h:form>
Resultado: #{conversorMonetarioBean.resultado}
</h:body>
</html>
Classe Bean:
@ManagedBean
public class ConversorMonetarioBean {
private String de;
private String para;
private Double valor;
private Double resultado;
private Map<String,Double> taxas = new LinkedHashMap<String,Double>();
public ConversorMonetarioBean() {
this.taxas.put("Real",1.0);
this.taxas.put("Euro",2.33);
this.taxas.put("Peso argentino",0.42);
this.taxas.put("Dólar americano",1.84);
}
public void converte(){
this.resultado = this.valor * this.taxas.get(this.de)/this.taxas.get(this.para);
}
public String getDe() {
return de;
}
public void setDe(String de) {
this.de = de;
}
public String getPara() {
return para;
}
public void setPara(String para) {
this.para = para;
}
public Double getValor() {
return valor;
}
public void setValor(Double valor) {
this.valor = valor;
}
public Double getResultado() {
return resultado;
}
public void setResultado(Double resultado) {
this.resultado = resultado;
}
public Map<String, Double> getTaxas() {
return taxas;
}
public void setTaxas(Map<String, Double> taxas) {
this.taxas = taxas;
}
}
Erro:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: java.lang.NullPointerException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
root cause
javax.faces.el.EvaluationException: java.lang.NullPointerException
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
javax.faces.component.UICommand.broadcast(UICommand.java:315)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
root cause
java.lang.NullPointerException
ConversorMonetarioBean.converte(ConversorMonetarioBean.java:30)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.el.parser.AstValue.invoke(AstValue.java:172)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
javax.faces.component.UICommand.broadcast(UICommand.java:315)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
Se alguem puder me ajudar.. eu agradeço muitooo