Olá pessoal,
Estou fazendo um trabalho da faculdade, e tem de ser em JSF 2.0 e sou mó noob nesta tecnologia, então preciso de um help, meu problema é o seguinte, tenho um formulário que vai ter x campos e um dropdown, caso o usuário selecione uma opção deste dropdown, irá aparecer mais campos, fazer isso eu já consegui fazer (vou postar o que eu já fiz abaixo) o problema é que os campos que devem aparecer, também precisam ser validados como required e tal, mas quando do o submit, só os campos que já estavam visiveis são validados e de quebra os que foram exibidos depois do usuario selecionar a opção são escondidos novamente…
No caso a selectOneMenu irá ter dois valores {Assinante:A,Promotor:P} quando usuário selecionar valor Promotor:P então os campos que estão dentro de idPanelDadosPromotor devem ser exibidos e validados, até agora só está exibindo não está validando, é como se os campos não fizessem parte do form, como eu adiciono eles?
Obrigado
o JSF
<?xml version='1.0' encoding='UTF-8' ?>
<!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">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form id="formAssinante">
<h:outputLabel value="Nome" for="nomeAssinante" />
<h:inputText id="nomeAssinante" value="#{assinanteManagedBean.assinante.nomeAssinante}" title="Nome" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="Apelido" for="apelidoAssinante" />
<h:inputText id="apelidoAssinante" value="#{assinanteManagedBean.assinante.apelidoAssinante}" title="Apelido" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="Email" for="emailAssinante" />
<h:inputText id="emailAssinante" value="#{assinanteManagedBean.assinante.emailAssinante}" title="Email" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="Senha" for="senhaAssinante" />
<h:inputText id="senhaAssinante" value="#{assinanteManagedBean.assinante.senhaAssinante}" title="Senha" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="FotoAssinante" for="fotoAssinante" />
<h:inputText id="fotoAssinante" value="#{assinanteManagedBean.assinante.fotoAssinante}" title="Foto" />
<br/><h:outputLabel value="Sexo" for="sexoAssinante" />
<h:inputText id="sexoAssinante" value="#{assinanteManagedBean.assinante.sexoAssinante}" title="Senha" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="Data de Nascimento" for="dataNascimentoAssinante" />
<h:inputText id="dataNascimentoAssinante" value="#{assinanteManagedBean.assinante.dataNascimentoAssinante}" title="Data Nascimento" required="true" requiredMessage="Required">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:inputText>
<br/><h:outputLabel value="Funçao" for="funcaoAssinante" />
<h:selectOneMenu id="funcaoAssinante" value="#{assinanteManagedBean.assinante.funcaoAssinante}">
<f:selectItems value="#{assinanteManagedBean.funcaoAssinanteList}"/>
<f:ajax event="change" listener="#{assinanteManagedBean.processarPainelDadosPromotor}" execute="@this" render="wrapDadosPromotor" />
</h:selectOneMenu>
<br/><br/><br/>
<h:panelGroup id="wrapDadosPromotor">
<h:panelGroup id="idPanelDadosPromotor" rendered="#{assinanteManagedBean.exibePainelPromotor}">
<h:outputLabel value="tipoPessoaPromotor" for="tipoPessoaPromotor" />
<h:inputText id="tipoPessoaPromotor" value="#{assinanteManagedBean.promotor.tipoPessoaPromotor}" title="tipoPessoaPromotor" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="cpfCnpjPromotor" for="cpfCnpjPromotor" />
<h:inputText id="cpfCnpjPromotor" value="#{assinanteManagedBean.promotor.cpfCnpjPromotor}" title="cpfCnpjPromotor" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="telefonePromotor" for="telefonePromotor" />
<h:inputText id="telefonePromotor" value="#{assinanteManagedBean.promotor.telefonePromotor}" title="telefonePromotor" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="celularPromotor" for="celularPromotor" />
<h:inputText id="celularPromotor" value="#{assinanteManagedBean.promotor.celularPromotor}" title="celularPromotor" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="cepEnderecoPromotor" for="cepEnderecoPromotor" />
<h:inputText id="cepEnderecoPromotor" value="#{assinanteManagedBean.promotor.cepEnderecoPromotor}" title="Foto" />
<br/><h:outputLabel value="logradouroEnderecoPromotor" for="logradouroEnderecoPromotor" />
<h:inputText id="logradouroEnderecoPromotor" value="#{assinanteManagedBean.promotor.logradouroEnderecoPromotor}" title="logradouroEnderecoPromotor" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="numeroEnderecoPromotor" for="numeroEnderecoPromotor" />
<h:inputText id="numeroEnderecoPromotor" value="#{assinanteManagedBean.promotor.numeroEnderecoPromotor}" title="numeroEnderecoPromotor" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="bairroEnderecoPromotor" for="bairroEnderecoPromotor" />
<h:inputText id="bairroEnderecoPromotor" value="#{assinanteManagedBean.promotor.bairroEnderecoPromotor}" title="bairroEnderecoPromotor" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="cidadeEnderecoPromotor" for="cidadeEnderecoPromotor" />
<h:inputText id="cidadeEnderecoPromotor" value="#{assinanteManagedBean.promotor.cidadeEnderecoPromotor}" title="estadoEnderecoPromotor" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="estadoEnderecoPromotor" for="estadoEnderecoPromotor" />
<h:inputText id="estadoEnderecoPromotor" value="#{assinanteManagedBean.promotor.estadoEnderecoPromotor}" title="estadoEnderecoPromotor" required="true" requiredMessage="Required"/>
<br/><h:outputLabel value="paisEnderecoPromotor" for="paisEnderecoPromotor" />
<h:inputText id="paisEnderecoPromotor" value="#{assinanteManagedBean.promotor.paisEnderecoPromotor}" title="paisEnderecoPromotor" required="true" requiredMessage="Required"/>
</h:panelGroup>
</h:panelGroup>
<br/><br/><br/>
<h:commandButton id="inserir" action="#{assinanteManagedBean.inserirCompleto}" value="Inserir" />
</h:form>
</h:body>
</html>
o ManagedBean
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.evto.apresentacao;
import br.com.evto.fachada.AssinanteFachada;
import br.com.evto.fachada.PromotorFachada;
import br.com.evto.modelo.Assinante;
import br.com.evto.modelo.Promotor;
import br.com.evto.util.DateUtil;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.SelectItem;
/**
*
* @author root
*/
@ManagedBean(name = "assinanteManagedBean")
@RequestScoped
public class AssinanteManagedBean {
private Assinante assinante;
private Promotor promotor;
private boolean exibePainelPromotor;
private String funcaoAssinante;
public List<SelectItem> getFuncaoAssinanteList() {
List<SelectItem> list = new ArrayList<SelectItem>();
list.add(new SelectItem("A", "Assinante"));
list.add(new SelectItem("P", "Promotor"));
return list;
}
public String getFuncaoAssinante() {
return funcaoAssinante;
}
public void setFuncaoAssinante(String funcaoAssinante) {
this.funcaoAssinante = funcaoAssinante;
}
/** Creates a new instance of AssinanteManagedBean */
public AssinanteManagedBean() {
}
public Assinante getAssinante() {
if (assinante == null) {
assinante = new Assinante();
}
return assinante;
}
public void setAssinante(Assinante assinante) {
this.assinante = assinante;
}
public Promotor getPromotor() {
if (promotor == null) {
promotor = new Promotor();
}
return promotor;
}
public void setPromotor(Promotor promotor) {
this.promotor = promotor;
}
public boolean isExibePainelPromotor() {
return exibePainelPromotor;
}
public void setExibePainelPromotor(boolean exibePainelPromotor) {
this.exibePainelPromotor = exibePainelPromotor;
}
public String montarPaginaParaInsercao() throws Exception {
this.assinante = new Assinante();
return "/assinante/InserirAssinante";
}
public String inserir() throws Exception {
Assinante ass = this.getAssinante();
//ass.setIdAssinante(Long.valueOf("1"));
ass.setDataCadastroAssinante(DateUtil.now());
ass.setFuncaoAssinante("A");
this.setAssinante(ass);
AssinanteFachada.inserir(this.getAssinante());
return "/index";
}
public String inserirCompleto() throws Exception {
Assinante ass = this.getAssinante();
ass.setDataCadastroAssinante(DateUtil.now());
this.setAssinante(ass);
AssinanteFachada.inserir(this.getAssinante());
if (ass.getFuncaoAssinante().equals("P")) {
this.getPromotor().setIdAssinante(this.getAssinante());
PromotorFachada.inserir(this.getPromotor());
}
return "/index";
}
public String montarPaginaCompletaParaInsercao() throws Exception {
this.assinante = new Assinante();
this.assinante.setPromotor(new Promotor());
return "/assinante/inserirAssinantePromotor";
}
public void processarPainelDadosPromotor(AjaxBehaviorEvent event) throws Exception {
if (this.getAssinante().getFuncaoAssinante().equals("P")) {
this.setExibePainelPromotor(true);
} else {
this.setExibePainelPromotor(false);
}
}
}