Ajax em SelectOneMenu

Boa Dia pessoal, gostaria de saber se existe alguma configuração a mais a se fazer para poder utilizar o ajax em uma SelectOneMenu, a ideia era a seguinte era disponibilizada uma lista(ainda que pequena) em uma SelectOneMenu, ai seria selecionado um item da lista colocado em uma variavel, ai o ajax (deveria funcionar) renderizando a outra SelectOneMenu que pegaria a variavel verificaria o valor dela e então montaria a lista de acordo.

xhtml:

<!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>Hello WOrld!</title>  
       </h:head>  
       <h:body>  
           <h:messages />  
           <h:form>  
               <h:selectOneMenu id="paises" value="#{testeBean.paisEscolhido}"
               					onchange="submit()">
               		<f:ajax event="change" actionListener="#{testeBean.estados}" render="mostraEstados" execute="paises"/>
               		<f:selectItems value="#{testeBean.pais}"/>            		
               </h:selectOneMenu>
           
           		  <h:selectOneMenu id="mostraEstados" value="#{testeBean.estadoEscolhido}">
    		  		<f:selectItems value="#{testeBean.estados}"/>
    		  </h:selectOneMenu>
           
           </h:form>  
       			
       </h:body>  
    </html> 

bean:

@ManagedBean
@RequestScoped
public class TesteBean {
	
	
	public List<String> pais = new ArrayList<>();
	
	public List<String> estados = new ArrayList<>();
	
	public String paisEscolhido;
	
	public String estadoEscolhido;
	
	
	public List<String> getEstados() {
		
		if(this.estados == null || this.estados.size() == 0){
			estados.add("selecione um pais estado");
		}else if(this.paisEscolhido.equals("Alemanha")){
			
			estados = new ArrayList<>();
			estados.add("SL 1");
			estados.add("SL 2");
			estados.add("SL 3");
			
		}else if(this.paisEscolhido.equals("Brasil")){
			
			estados = new ArrayList<>();
			estados.add("SLB 1");
			estados.add("SLB 2");
			estados.add("SLB 3");
			
		}
		
		return estados;
	}

	public void setEstados(List<String> estados) {
		this.estados = estados;
	}

	public List<String> getPais() {
		
		if(pais == null || pais.size() == 0){
			pais.add("escolha um pais");
			pais.add("Alemanha");
			pais.add("Brasil");
		}
		return pais;
	}

 //metodos getters and setters.

E qual o erro está dando?

Nenhum ele simplesmente não atualiza o SelectOneMenu. Bom procurei em varios tutoriais, na documentação da jsf também.

Veja c te ajuda: JSF Exemplos Simples com Ajax.

Boa Tarde, então eu ja havia olhado primeiro fiz esse seu hello world, dps tentei colocar ajax em umas outras tags. Mas esse ta mais dificil do que resolver o cubo mágico.

Tentei fazer renderizar uma tabela quando escolhece um pais mas também não consegui, a forma com que estou escrevendo a tag <f:ajax /> está incorreta mas está igual a da documentation, pelo que eu entendi. Só preciso utilizar : quando é um item de fora do item onde o ajax está o que não é o caso. Tentei também pegando por evento com ValueChangeEvent ele também não pega o valor, sei que não pega pois coloquei saidas como System.out.println(); nos métodos getters and setters e nenhum coloco nada no console nem getPaisEscolhido, nem setEstadoEscolhido.