Passar parametro para o construtor do ManagedBean

Oi gente tudo bem,

tenho uma aplicação com JSF e tenho uma dúvida, como posso passar um parametro para o construtor da minha classe através da minha pagina xhtml?

a ideia é passar um parametro para o metodo o construtor do ListaEstado.java e fazer com q ele passe esse parametro para o metodo filtrar() e com esse parametro eu usaria no meu createCriteria

acho q é a partir deste codigo que o managedBean é iniciado

<h:selectOneMenu id="somEstado" value="#{gravaCidade.est_id}" >                            
    <f:selectItems value="#{listaEstado.suaLista}" var="u" itemLabel="#{u.est_sigla}" itemValue="#{u.est_id}" />
</h:selectOneMenu>

Meu ManagedBean
ListaEstado.java(a parte que eu acho importante)

public ListaEstado() {

        filtrar("br.salesianos.modelo.Estado");
    }


    public void filtrar(String x) {
        Session sessao = CriadorDeSessaoNovo.getSession();
        Criteria listagem_query = sessao.createCriteria(x).
                addOrder(Order.asc("est_nom"));
        setSuaLista(listagem_query.list());
        sessao.close();
    }

Espero que tenha conseguido explicar minha duvida!

Cidade.xhtml (completo)

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                template="/template/principalSec.xhtml"
                xmlns:h="http://java.sun.com/jsf/html"                
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:rich="http://richfaces.org/rich"
                xmlns:a4j="http://richfaces.org/a4j"
                xmlns:c="http://java.sun.com/jsp/jstl/core"
                >

    <ui:define name="css_javascript">
        <script language="JavaScript">
        function function1(elem) {
                var d = elem.childNodes[0].innerHTML;
                var e = elem.childNodes[1].innerHTML;
                var f = elem.childNodes[2].innerHTML;
                //alert("-"+d+"-"+e+"-"+f)
                document.getElementById("FormCidade:itId").value=d;
                document.getElementById("FormCidade:itIdOculto").value=d;
                document.getElementById("FormCidade:somEstado").value=e;
                document.getElementById("FormCidade:itNome").value=f;
        }
        function limpador() {
                document.getElementById("FormCidade:itId").value="";
                document.getElementById("FormCidade:itIdOculto").value="";
                document.getElementById("FormCidade:somEstado").value="";
                document.getElementById("FormCidade:itNome").value="";
        }
        </script>
    </ui:define>

    <ui:define name="migalha">
        Home > Tabelas > Cidade        
    </ui:define>

    <ui:define name="body">
        <div align="center">

            <rich:panel header="Cidade" >
                <h:form id="FormCidade">

                    <table class="alinhaDireita">
                        <tr>
                            <td>Id:</td>
                            <td><h:inputText id="itId" disabled="true" value="#{gravaCidade.cid_id}" /></td>
                        </tr>
                        <tr>
                            <td>Estado:*</td>
                            <td>
                        <h:selectOneMenu id="somEstado" value="#{gravaCidade.est_id}" >                            
                            <f:selectItems value="#{listaEstado.suaLista}" var="u" itemLabel="#{u.est_sigla}" itemValue="#{u.est_id}" />
                        </h:selectOneMenu>
                        </td>
                        </tr>
                        <tr>
                            <td colspan="2"><h:message  styleClass="mensagemErro" for="somEstado" /></td>
                        </tr>
                        <tr>
                            <td>Nome da cidade:*</td>
                            <td><h:inputText id="itNome" required="true" value="#{gravaCidade.cid_nome}" /></td>                            
                        </tr>
                        <tr>
                            <td colspan="2"><h:message  styleClass="mensagemErro" for="itNome" /></td>
                        </tr>
                    </table>

                    <h:inputHidden id="itIdOculto"  value="#{gravaCidade.cid_id}"/>

                    <h:commandButton immediate="true" onclick="limpador()"  value="Limpar"/>

                    <a4j:commandButton id="gravar" render="out,FormCidade" action="#{gravaCidade.gravar}" value="Gravar"  />

                    <a4j:commandButton id="excluir" render="out,FormCidade" value="Excluir" action="#{gravaCidade.excluir}" />
                </h:form>
            </rich:panel>

            <br/>
            <rich:message for="gravar" /> <rich:message for="excluir" />
            <br/><br/>

            <rich:panel header="Pesquisa" >
                <h:form >
                    <h:inputText value="#{listaCidade.cid_nom}" />
                    <a4j:commandButton value="Pesquisar" render="out" action="#{listaCidade.filtrar}"/>
                    <br/><br/>

                </h:form>
                <a4j:outputPanel id="out">
                    <table border="1">
                        <tr>
                            <td>ID</td>
                            <td>Cidade</td>
                            <td>Estado</td>
                        </tr>
                        <a4j:repeat value="#{listaCidade.suaLista}" var="x">
                            <tr onclick="function1(this)" ><td>#{x.cid_id}</td><td style="display: none">#{x.estado.est_id}</td><td>#{x.cid_nom}</td><td >#{x.estado.est_sigla}</td></tr>
                        </a4j:repeat>
                    </table>
                </a4j:outputPanel>
            </rich:panel>
            <br/>
        </div>
    </ui:define>

</ui:composition>

Não se passa parametro para um construtor de um bean, por que ele é criado internamente pelo framework.
o jeito vai ser passar um parametro pra um atributo (através de metodos claro) e depois chamar um metodo que processa o que você queria que fosse o construtor.

Se eu passar o codigo no abaixo da minha pagina xhtml, posso recupera-lo atraves do FacesContext

<f:metadata>
  <f:viewParam id="view" name="view" value="pegaVariavel" />  
</f:metadata>

Pergunto, pq atualmente uso parametros pelo h:commandButton e recupero eles pelo FacesContext no meu ManagedBean, é possivel fazer o mesmo que eu faço abaixo para o f:viewParam?

<a4j:commandButton value="Pesquisar" render="out" action="#{pesquisaTudo.pesquisar}">
     <f:param name="classe" value="br.salesianos.modelo.Sacramentos_Ministerios" />
     <f:param name="campo" value="smi_nome" />
</a4j:commandButton>
String classe = (String) FacesContext.getCurrentInstance().
                getExternalContext().getRequestParameterMap().get("classe");
    String campo = (String) FacesContext.getCurrentInstance().
                getExternalContext().getRequestParameterMap().get("campo");

pode passar parametros e pegar, apenas não pode no construtor.

mas se nao for no construtor nao vai adiantar pq preciso chamar ele assim q a pagina for chamada, para q com esse parametro eu use ele para setar o valor de parametro na imnha pagina