Recuperar seleção SelectOneMenu - JSF

Oi pessoal, sou iniciante em java web e estou tendo com problemas para validar a escolha feita no radio.

Tenho:

  • Um Bean Simulacao com get e setTipoSimulacao, equals e hashcode

  • Um ManagedBean com a função verificaSimulacao()


get e setSelectItem(Simulacao tpSimulacao)

public String verificaSimulacao(){
        if(selectedSimulacao.getTipoSimulacao().equals("0"))
            return "gotoNovoAlunos";
        else
            return "gotoCadAlunos";
    }
  • E um jsp com o componente radio:
 <h:selectOneRadio id="rdoSimulacao" value="SimulacaoFaces.selectedItem.tipoSimulacao">
            <f:selectItem itemValue="0" itemLabel="Novos alunos"/>
            <f:selectItem itemValue="1" itemLabel="Alunos cadastrados no sistema"/>
            </h:selectOneRadio>

No faces-config tenho configurado o managed-bean SimulacaoFaces.

Gostaria de saber muito se estou errando na hora de recuperar e validar o retorno do radio, se posso mesmo pegar o valor do item value e comparar dessa maneira ou devo fazer de outro jeito, pois desse jeito só recebo o erro NullPointerException.

Agradeço a ajuda.

Tenta assim:

No bean:

String tipoSimulacao;

Na pagina:

&lt;h:selectOneRadio id="rdoSimulacao" value="#{simulacaoFaces.tipoSimulacao}"&gt;  
           &lt;f:selectItem itemValue="0" itemLabel="Novos alunos"/&gt;  
           &lt;f:selectItem itemValue="1" itemLabel="Alunos cadastrados no sistema"/&gt;  
           &lt;/h:selectOneRadio&gt; 

Raf4ever tentei assim mas ainda aparece o seguinte erro:
exception

javax.servlet.ServletException: #{SimulacaoFace.verificaSimulacao}: java.lang.NullPointerException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)

root cause

javax.faces.FacesException: #{SimulacaoFace.verificaSimulacao}: java.lang.NullPointerException
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)

root cause

javax.faces.el.EvaluationException: java.lang.NullPointerException
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)

root cause

java.lang.NullPointerException
secplanejamento.managedbeans.SimulacaoFace.verificaSimulacao(SimulacaoFace.java:89)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.el.parser.AstValue.invoke(AstValue.java:191)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)

O que pode ser?

Coloca o código completo dessa classe SimulacaoFace

Esse é o código:

// BEAN

package secplanejamento.db;

public class Simulacao {

    String tipoSimulacao;

    public String getTipoSimulacao() {
        return tipoSimulacao;
    }

    public void setTipoSimulacao(String tipoSimulacao) {
        this.tipoSimulacao = tipoSimulacao;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Simulacao other = (Simulacao) obj;
        if ((this.tipoSimulacao == null) ? (other.tipoSimulacao != null) : !this.tipoSimulacao.equals(other.tipoSimulacao)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 59 * hash + (this.tipoSimulacao != null ? this.tipoSimulacao.hashCode() : 0);
        return hash;
    }

}
//MANAGED BEAN

import secplanejamento.db.Simulacao;


public class SimulacaoFace {

    private Simulacao selectedSimulacao;

    public SimulacaoFace() {
        System.out.println("The Simulacao face foi criado");
    }

   public Simulacao getSelectedSimulacao() {
        return selectedSimulacao;
    }

    public void setSelectedSimulacao(Simulacao selectedSimulacao) {
        this.selectedSimulacao = selectedSimulacao;
    }

    public String verificaSimulacao(){
        if(selectedSimulacao.getTipoSimulacao().equals("0"))
            return "gotoNovoAluno";
        else
            return "gotoCadAluno";
    }
}
//SIMULAÇÃO.JSP

<h:selectOneRadio id="rdoSimulacao" value="SimulacaoFace.selectedSimulacao.tipoSimulacao">
            <f:selectItem itemValue="0" itemLabel="Novos alunos"/>
            <f:selectItem itemValue="1" itemLabel="Alunos cadastrados no sistema"/>
            </h:selectOneRadio>
//FACES-CONFIG
<managed-bean>
        <managed-bean-name>SimulacaoFace</managed-bean-name>
        <managed-bean-class>secplanejamento.managedbeans.SimulacaoFace</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>

...

  <navigation-rule>
        <from-view-id>/simulacao.jsp</from-view-id>
        <navigation-case>
            <from-outcome>gotoCadAluno</from-outcome>
            <to-view-id>/cadAluno.jsp</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>gotoNovoAluno</from-outcome>
            <to-view-id>/novoAluno.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>