Como usar Rendered selectOneRadio para não retornar valor nulo?
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>
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
Curtidas 0
Respostas
Jorge Bavaresco
06/11/2013
Adriano, posta o codigo completo do teu managed bean e da tua view.
GOSTEI 0
Adriano Aguiar
06/11/2013
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>
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>
GOSTEI 0
Jorge Bavaresco
06/11/2013
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.
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.
GOSTEI 0
Adriano Aguiar
06/11/2013
Boa noite Jorge, obrigado funcionou!
att,
Adriano de Aguiar
att,
Adriano de Aguiar
GOSTEI 0