Fórum Como usar Rendered selectOneRadio para não retornar valor nulo? #460313
06/11/2013
0
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
Curtir tópico
+ 0Posts
07/11/2013
Jorge Bavaresco
Gostei + 0
08/11/2013
Adriano Aguiar
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
11/11/2013
Jorge Bavaresco
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
13/11/2013
Adriano Aguiar
att,
Adriano de Aguiar
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)