Problema ao passa valor para o selectOneMenu (Não carrega o value)

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]

O que vem a ser esse “t:” em t:subtipo ?

Esse “t” é o id do “<div>” que separa o componente.

você ja tentou colocar só o id direto?

Amigo, você ta falando do id do componente, se sim, eu já tentei.
Já coloquei os SelectOneMenu dentro de um fieldset para mandar atualizar apenas o field, mas não funcionou. Tá osso faz dois dia que estou quebrando a cabeça com isso!

E seu listener é invocado ao alterar o primeiro select?

Sim, eu debuguei ele chama o metodo “carregarSubtipo()”, mas não atrubui o valor para “infracao.getSubTipo().getTipo().getId()”.

Poste seu método, por favor.

Neste SelectOneMenu eu carrrego o todos os tipos e jogo no value="#{infracaoBean.infracao.subTipo.tipo}"n

<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>      

no Bean o metodo que carrega todos os tipos

public List<Tipo> getListaTipo() {
		TipoRN tipoRN = new TipoRN();
		listaTipo = tipoRN.listar();		
		return listaTipo;
	}

O selectOneMenu onde eu quero que carregue todos os SubTipo

<div class="campo-simples">
				<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>

O Bean onde ele pega o valor selecionado no primeiro SelectOneMene e atribui o valar para o metodo onde sera carregado os subTipo

public String carregarSubtipo() {
		SubtipoRN subtipoRN = new SubtipoRN();
		this.listaSubtipo=subtipoRN.findSubtipoByTipoId(infracao.getSubTipo().getTipo().getId());
		return "/admin/cadastrodeinfracao";
	}