Duvida Reflection + Ajuda Erro

Olá pessoal, fiz uma tela em jsp e estou tentando eliminar alguns comboBox que usei,
usando assim um campo para o usuario digitar o codigo do item a ser inserido ou entao digitar o nome e clicar em localizar
para ele retornar uma pesquisa no banco em um ModalPanel.

Consegui fazer a chamada do modal, preenchendo ele com todos os dados, mais não consegui pegar os dados
que são digitados no campo para fazer a pesquisa, é ai q entrou denovo minha duvida quanto a Reflection.

Em que ponto a reflection é disparada?
Em que dado momento os dados do browser do cliente é inserido no bean no servidor de forma a poder ser manipulado ??

Vou mandar o codigo, para ver se alguem pode me ajudar.

Agendar.jsp

<tr>
  <td><h:outputText value="Tipo de Agenda" /></td>
  <td><h:outputText value="Código: " /> <h:inputText
	     id="idTpAgenda" value="#{agendarHandler.tipoAgendaSelecionada}"
	     size="10" /> &nbsp;<h:outputText value="Descrição: " /> <h:inputText
	     id="descTpAgenda" value="#{agendarHandler.buscaDescricao}" /></td>
  <td><a4j:commandButton value="Buscar"
	     action="#{agendarHandler.buscarTipoAgenda}"
	     reRender="idTpAgenda, descTpAgenda" id="btnBuscarTpAgenda"
	     size="7" image="/images/icons/buscar.gif">
	    <rich:componentControl event="onclick" 	attachTo="btnBuscarTpAgenda" operation="show"
		for="pnBuscaTpAgenda" />
	    </a4j:commandButton></td>
</tr>

Fora do form

<rich:modalPanel id="pnBuscaTpAgenda" height="300" width="600">
				<f:facet name="header">
					<h:panelGroup>
						<h:outputText value="Pesquisa de Tipo de Agenda" />
					</h:panelGroup>
				</f:facet>
				<f:facet name="controls">
					<h:panelGroup>
						<h:graphicImage value="images/icons/fecharModal.gif"
							style="cursor:pointer;" id="linkFechar3" />
						<rich:componentControl for="pnBuscaTpAgenda"
							attachTo="linkFechar3" event="onclick" operation="hide"></rich:componentControl>
					</h:panelGroup>
				</f:facet>
				<h:outputText value="Selecione um Tipo de Agenda abaixo: " />

				<center><br />
				<br />
				<rich:dataTable rowClasses="linha2, linha1"
					value="#{agendarHandler.tipoAgendaSelecionada}" var="f"
					rendered="#{not empty agendarHandler.buscarTipoAgenda}" rows="10"
					id="listaTpAgenda">

					<f:facet name="header">
						<rich:columnGroup>
							<rich:column>
								<h:outputText value="Código" />
							</rich:column>
							<rich:column>
								<h:outputText value="Descrição" />
							</rich:column>
							<rich:column>
								<h:outputText value="Selecionar" />
							</rich:column>
						</rich:columnGroup>
					</f:facet>

					<rich:column>
						<h:outputText value="#{f.id}"></h:outputText>
					</rich:column>
					<rich:column>
						<h:outputText value="#{f.descricao}"></h:outputText>
					</rich:column>
					<rich:column>
						<a4j:commandLink actionListener="#{usuarioHandler.altera}"
							reRender="CadUsuario">
							<h:outputText value="Selecionar" />

						</a4j:commandLink>
					</rich:column>


				</rich:dataTable>


				<center><h:outputText value="#{clienteHandler.mensagem}"
					id="msgCliente" /> <br />
				<h:outputText value="#{clienteHandler.erro}" /> <br />
				<br />
				<br />
				<br />
				<h:graphicImage value="images/icons/ok.gif" style="cursor:pointer;"
					id="linkFechar4" /> <rich:componentControl for="pnBuscaTpAgenda"
					attachTo="linkFechar4" event="onclick" operation="hide" /></center>
			</center>
			</rich:modalPanel>

AgendarHandler.java

public class AgendarHandler {

	private Agenda agenda = new Agenda();

	private List<Agenda> agendas = new ArrayList<Agenda>();
	private List<LocalAtendimento> exameLocal = new ArrayList<LocalAtendimento>();

	private String mensagem;
	private String erro;

	private String funcionarioSelecionado;
	private String clienteSelecionado;
	private String profissionaldesaudeSelecionado;
	private String localAtendimentoSelecionado;
	private Integer tipoAgendaSelecionada;

	private String buscaDescricao;

	public String getBuscaDescricao() {
		return buscaDescricao;
	}

	public void setBuscaDescricao(String buscaDescricao) {
		this.buscaDescricao = buscaDescricao;
	}

	public List<LocalAtendimento> getExameLocal() {
		return exameLocal;
	}

	public String procedimentoExameSelecionado = null;

	public String getProcedimentoExameSelecionado() {
		return procedimentoExameSelecionado;
	}

	public void setProcedimentoExameSelecionado(
			String procedimentoExameSelecionado) {
		this.procedimentoExameSelecionado = procedimentoExameSelecionado;
	}


	@SuppressWarnings("unchecked")
	public static List<LocalAtendimento> getListaExameLocal(
			String procedimentoExameSelecionado) {

		try {

			Session s = HibernateUtil.currentSession();
			String sql = "Select nomfant_locatend, id_locatend from LocalAtendimento where id_locatend=(Select id_locatend from ExameLocal where id_procex= :procedimentoExameSelecionado)";
			SQLQuery qryExameLocal = s.createSQLQuery(sql);
			qryExameLocal.setParameter("procedimentoExameSelecionado",
					procedimentoExameSelecionado);
			qryExameLocal.setResultTransformer(Transformers
					.aliasToBean(LocalAtendimento.class));
			System.out.println("Query Exame Local executada com sucesso.");
			return qryExameLocal.list();

		} catch (Exception e) {
			System.out.println("ERRO QUERY Exame Local : " + e.getMessage());
			e.printStackTrace();

			return null;
		}

	}

	public List<TipoAgenda> getBuscarTipoAgenda() {
		
	
		//TESTE
		System.out.println(this.getTipoAgendaSelecionada());
		System.out.println(this.buscaDescricao);
		
		List<TipoAgenda> retornaTpAgenda = TipoAgendaHandler.BuscaTipoAgenda(
				tipoAgendaSelecionada, buscaDescricao);
		
		System.out.println(retornaTpAgenda.size());
		return retornaTpAgenda;

	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public Agenda getAgenda() {
		return agenda;
	}

	public void setAgenda(Agenda agenda) {
		this.agenda = agenda;
	}

	public List<Agenda> getAgendas() {
		return agendas;
	}

	public void setAgendas(List<Agenda> agendas) {
		this.agendas = agendas;
	}

	public String getErro() {
		return erro;
	}

	public void setErro(String erro) {
		this.erro = erro;
	}

	public String getFuncionarioSelecionado() {
		return funcionarioSelecionado;
	}

	public void setFuncionarioSelecionado(String funcionarioSelecionado) {
		this.funcionarioSelecionado = funcionarioSelecionado;
	}

	public String getClienteSelecionado() {
		return clienteSelecionado;
	}

	public void setClienteSelecionado(String clienteSelecionado) {
		this.clienteSelecionado = clienteSelecionado;
	}

	public String getLocalAtendimentoSelecionado() {
		return localAtendimentoSelecionado;
	}

	public void setLocalAtendimentoSelecionado(
			String localAtendimentoSelecionado) {
		this.localAtendimentoSelecionado = localAtendimentoSelecionado;
	}

	public String getProfissionaldesaudeSelecionado() {
		return profissionaldesaudeSelecionado;
	}

	public void setProfissionaldesaudeSelecionado(
			String profissionaldesaudeSelecionado) {
		this.profissionaldesaudeSelecionado = profissionaldesaudeSelecionado;
	}


	public void setExameLocal(List<LocalAtendimento> exameLocal) {
		this.exameLocal = exameLocal;
	}

	public Integer getTipoAgendaSelecionada() {
		return tipoAgendaSelecionada;
	}

	public void setTipoAgendaSelecionada(Integer tipoAgendaSelecionada) {
		this.tipoAgendaSelecionada = tipoAgendaSelecionada;
	}

}

TipoAgendaHandler.java

public List<TipoAgenda> getTipoAgendas() {
		System.out.println("Lendo Tipo de Agenda...");
		Session session = HibernateUtil.currentSession();
		Dao<TipoAgenda> dao = new Dao<TipoAgenda>(session, TipoAgenda.class);
		return dao.list();
	}
	
	@SuppressWarnings("unchecked")
	public static List<TipoAgenda> BuscaTipoAgenda(Integer id, String descricao) {
		
		
		Session session = HibernateUtil.currentSession();
		Criteria crit = session.createCriteria(TipoAgenda.class);
		//if (id != null) {
		//	crit.add(Restrictions.ilike("id", id,
		//			MatchMode.ANYWHERE));
		//}
		if (descricao != null) {
			crit.add(Restrictions.ilike("descricao", descricao,
					MatchMode.ANYWHERE));
		}
		crit.addOrder(Order.asc("id"));
		return crit.list();
	}

TipoAgenda.java

public class TipoAgenda {
	
	@Id
	@GeneratedValue
	@Column(name="id_tpagenda")
	private Integer id;
	
	@Column(name="desc_tpagenda", nullable=false, length=40)
	private String descricao;
	
	@Column(name="ativo_tpagenda")
	private Boolean ativo = true;

	public Boolean getAtivo() {
		return ativo;
	}

	public void setAtivo(Boolean ativo) {
		this.ativo = ativo;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	
}

O Problema é que quando clico no btnBuscarTpAgenda, os valores não são enviados ao Bean.
Alguem pode ajudar ??