Fórum Como usar Rendered selectOneRadio para não retornar valor nulo? #460313

06/11/2013

0

Boa tarde me deparei como problema ao usar Rendered no jsf ao selecionar a opção sim no selecOneRadio ele habilita um campo mas está retornando valor do campo null, logo abaixo vou adicionar exemplo!

public void metodoDeficiencia() {
renderedDeficiencia = false;
if (morador.getPessoaDeficiente().equals("1")) {

renderedDeficiencia = true;
} else {
renderedDeficiencia = false;
}


esse aqui é jsf que chama metodo

<p:panelGrid columns="2">

<h:outputText value="Há pessoas com deficiência:" />
<p:selectOneRadio id="deficiencia" value="#{morador.morador.pessoaDeficiente}">
<f:selectItem itemLabel="Sim" itemValue="1" />
<f:selectItem itemLabel="Não" itemValue="2" />
<p:ajax update="pgDeficiencia" listener="#{morador.metodoDeficiencia}"

/>
</p:selectOneRadio>

</p:panelGrid>
<h:panelGroup id="pgDeficiencia">
<p:panelGrid columns="2" id="mostrarDeficiencia"
rendered="#{morador.renderedDeficiencia">
<h:outputText value="Qual Deficiência:" id="deficiencia2" />
<p:inputText value="#{morador.morador.nomeDeficiencia}" />
<h:outputText value="Qual idade:" id="idadeDeficiencia" />
<p:inputText value="#{morador.morador.idade}" />

</p:panelGrid>

</h:panelGroup>
Adriano Aguiar

Adriano Aguiar

Responder

Posts

07/11/2013

Jorge Bavaresco

Adriano, posta o codigo completo do teu managed bean e da tua view.
Responder

Gostei + 0

08/11/2013

Adriano Aguiar

Boa noite segue código!

Bean

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;


@ManagedBean(name = "moradorBean")
@RequestScoped
public class MoradorBean {
private Morador morador;
private boolean renderedDeficiencia = false;
private String pessoaDeficiente;

public MoradorBean() {
morador = new Morador();
}

public String salvar() {
System.out.println(morador.getNomeDeficiencia());

return "index";
}

public void metodoDeficiencia() {

renderedDeficiencia = false;
if (morador.getPessoaDeficiente().equals("1")) {

renderedDeficiencia = true;
} else {
renderedDeficiencia = false;
}
}

public Morador getMorador() {
return morador;
}

public void setMorador(Morador morador) {
this.morador = morador;
}

public boolean isRenderedDeficiencia() {
return renderedDeficiencia;
}

public void setRenderedDeficiencia(boolean renderedDeficiencia) {
this.renderedDeficiencia = renderedDeficiencia;
}

public String getPessoaDeficiente() {
return pessoaDeficiente;
}

public void setPessoaDeficiente(String pessoaDeficiente) {
this.pessoaDeficiente = pessoaDeficiente;
}

}

View

<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:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">

<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Sistemas</title>

</h:head>

<h:body>
<h:form id="cadastrar">
<p:panelGrid columns="2">

<h:outputText value="Há pessoas com deficiência:" />
<p:selectOneRadio id="deficiencia"
value="#{moradorBean.morador.pessoaDeficiente}">
<f:selectItem itemLabel="Sim" itemValue="1" />
<f:selectItem itemLabel="Não" itemValue="2" />
<p:ajax update="pgDeficiencia"
listener="#{moradorBean.metodoDeficiencia}" />
</p:selectOneRadio>

</p:panelGrid>
<h:panelGroup id="pgDeficiencia">
<p:panelGrid columns="2" id="mostrarDeficiencia"
rendered="#{moradorBean.renderedDeficiencia}">
<h:outputText value="Qual Deficiência:" id="deficiencia2" />
<p:inputText value="#{moradorBean.morador.nomeDeficiencia}" />


</p:panelGrid>

</h:panelGroup>
<p:commandButton value="Salvar" action="#{moradorBean.salvar}" />
</h:form>
</h:body>
</html>
Responder

Gostei + 0

11/11/2013

Jorge Bavaresco

Resolvido cara.

Muda o teu escopo @RequestScoped para @SessionScoped


Pois o objeto está exibindo null pois não está inicializado. O escopo de requisição inicia quando a requisição inicia e termina após responder. No primeiro acesso o objeto foi inicializado, no segundo acesso ele pode estar com valor nulo, quando tu seleciona se tem ou não deficiência.

Testa com SessionScoped, se funcionar depois tu escolhe o escopo mais adequado.

Testa ai e posta o resultado, se funcionou ou não.
Responder

Gostei + 0

13/11/2013

Adriano Aguiar

Boa noite Jorge, obrigado funcionou!


att,
Adriano de Aguiar
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar