Renderizar input ao clicar em radio button com f:ajax

Olá! Essa é minha primeira postagem no GUJ, então perdoem algum erro.

Minha dúvida é a seguinte: tenho dois botões radio, um ‘Matricula’ e outro ‘Nome’. Gostaria de saber como fazer a validação, já que um é só números e o outro é só letras, respectivamente. Tentei usar f:ajax event=“change” , mas ele só faz a renderização se eu clicar no submit duas vezes (ou seja, depois que ele atualiza a página). Código abaixo:

 <h:selectOneRadio value="#{pesquisarMB.filtro}" required="true" >
     <f:ajax event="click" listener="#{pesquisarMB.habilitar()}"/>
      <f:selectItem itemLabel=" Matricula" itemValue="1" />
      <f:selectItem itemLabel=" Nome" itemValue="2"/>
  </h:selectOneRadio>
  <h:inputText value="#{pesquisarMB.pesquisa}" rendered="#{pesquisarMB.mostrarMat}" id="edPesquisaMat" validatorMessage="Digite a matrícula do funcionário!" onkeypress="mascara(this, soNumeros)">
      <f:validateLength minimum="1"/>
  </h:inputText>
  <h:inputText value="#{pesquisarMB.pesquisa}" rendered="#{pesquisarMB.mostrarNome}" id="edPesquisaNome" validatorMessage="Digite o nome do funcionário!" onkeypress="mascara(this, soLetras)">
      <f:validateLength minimum="1"/>
  </h:inputText>
  <h:commandButton action="#{pesquisarMB.realizarPesquisa()}" value="Buscar"></h:commandButton>