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>