Estou tentando selecionar um item da minha lista (Tipo) do SelectOneMenu para ser carregado uma lista (SubTipo) no outro SelectOneMenu. O primeiro SelectOneMenu carrega mas não atribui o valor para ser passado para o segundo SelectOneMenu (SubTipo). Já tentei de tudo!
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- Cadastro de Infrações
version 10/10/2011 Marcio v1.0 Versão inicial -->
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<ui:composition template="/templates/common.xhtml">
<ui:define name="title">Mammon - Cadastro de Infrações</ui:define>
<ui:define name="conteudo">
<h2>Cadastro de Infrações</h2>
<h:form id="cadastroinfracoes">
<p:growl id="msgs" />
<h:inputHidden value="#{infracaoBean.infracao.id}" />
<div class="campo-simples">
<h:outputLabel value="Típo: " for="tipo" />
<p:selectOneMenu style="width:537px" id="tipo"
value="#{infracaoBean.infracao.subTipo.tipo}" converter="entityConversor"
required="true" requiredMessage="O TIPO É OBRIGATÓRIO">
<f:selectItem itemValue="" itemLabel="SELECIONE O TÍPO"
noSelectionOption="true" />
<f:selectItems value="#{infracaoBean.listaTipo}" var="tipo"
itemValue="#{tipo}" itemLabel="#{tipo.descricao}" />
<p:ajax listener="#{infracaoBean.carregarSubtipo}" update="t:subtipo,t:listaSubtipo" immediate="true"/>
</p:selectOneMenu>
</div>
<div class="campo-simples" id="t">
<h:outputLabel value="Sub-Típo: " />
<p:selectOneMenu style="width:537px" id="subtipo"
value="#{infracaoBean.infracao.subTipo}" converter="entityConversor">
<f:selectItem itemValue="" itemLabel="SELECIONE O SUB-TIPO"
noSelectionOption="true" />
<f:selectItems value="#{infracaoBean.listaSubtipo}" var="subtipo"
itemValue="#{subtipo}" itemLabel="#{subtipo.descricao}"
id="listaSubtipo" />
</p:selectOneMenu>
</div>
<div class="campo-simples">
<h:outputLabel value="Enquadramento Legal: " for="enquadramento" />
<p:inputTextarea style="width:537px" id="enquadramento"
value="#{infracaoBean.infracao.enquadramento}" required="true"
requiredMessage="O ENQUADRAMENTO LEGAL É OBRIGATÓRIO" title="Digite o enquadramento legal">
</p:inputTextarea>
</div>
<div class="campo-simples">
<h:outputLabel value="Data de Início: " />
<p:calendar value="#{infracaoBean.infracao.inicio}" id="dataInicio"
pattern="dd/MM/yyyy"
converterMessage="Digite a Data de Inicio no formato dd/mm/aaaa"
onblur="validarData(this)" title="Selecione a data de início da infração"
required="true" requiredMessage="A DATA DE INÍCIO É OBRIGATÓRIA">
<p:ajax event="dateSelect" update="dataFim" />
</p:calendar>
</div>
<div class="campo-simples">
<h:outputLabel value="Data de Término: " />
<p:calendar value="#{infracaoBean.infracao.fim}" id="dataFim"
pattern="dd/MM/yyyy" title="Selecione a data final da infração"
converterMessage="Digite a Data de Término no formato dd/mm/aaaa"
/>
</div>
<div style="clear: both;"></div>
<div class="campo-simples">
<p:commandButton value="Salvar" action="#{infracaoBean.inserir}"
ajax="false" title="Clique para salvar"/>
</div>
</h:form>
</ui:define>
</ui:composition>
</html>
Bean
[code]
@javax.faces.bean.ManagedBean(name = “infracaoBean”)
@SessionScoped
public class InfracaoBean {
private Infracao infracao = new Infracao();
private List listaTipo;
private List listaSubtipo;
private Tipo tipo = new Tipo();
private SubTipo subTipo;
private List listainfracaoPMI;
private List listainfracaoSN;
public List<Tipo> getListaTipo() {
TipoRN tipoRN = new TipoRN();
listaTipo = tipoRN.listar();
return listaTipo;
}
public String carregarSubtipo() {
SubtipoRN subtipoRN = new SubtipoRN();
this.listaSubtipo=subtipoRN.findSubtipoByTipoId(infracao.getSubTipo().getTipo().getId());
return "/admin/cadastrodeinfracao";
}
[/code]