Oi pessoal, tenho uma aplicação que uso JSF 2 com hibernate,
tenho uma tabela de cidades e outra de estados, to tentando criar dois comboboxs(ou selectOne), o primeiro com o nome dos estados e o segundo com o nome das cidades.
A ideia é simples, ao selecionar um estado no primeiro combobox, a cidade seria exibida no segundo, eu até conseguir fazer isso usando o valueChangeListener , porém está dando um erro ao executar um commandButton
Formulario:pesCidade: Erro de validação: o valor não é válido
Não entendi o pq do erro, qualquer ajuda é muito bem-vinda
pagina.xhtml<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">
</ui:define>
<ui:define name="body">
<div align="center">
<h1>Welcome</h1>
<h:messages/>
<h:form id="Formulario">
<br/>
<h:selectOneMenu valueChangeListener="#{theSelectBean.mudaLista}" onchange="submit()" id="pesEstado" value="#{theSelectBean.nomeestado}">
<f:selectItems value="#{gravaEstado.estados}" var="u" itemLabel="#{u.est_nom}" itemValue="#{u.est_nom}" />
</h:selectOneMenu>
<br/><br/>
<h:selectOneMenu id="pesCidade" value="#{gravaCidade.cid_nome}" >
<f:selectItems value="#{theSelectBean.cidades}" var="u" itemLabel="#{u.cid_nom}" itemValue="#{u.cid_id}" />
</h:selectOneMenu>
<h:commandButton value="Clica" />
<br/><br/>
</h:form>
</div>
</ui:define>
</ui:composition>
@ManagedBean
public class TheSelectBean {
private String nome;
private String nomeestado;
private Integer idestado;
private String sexDesc;
private HtmlInputText sexDescCmp;
private String capt;
private HtmlInputText capturador;
private List cidades;
private HtmlSelectOneMenu selectonemenu;
public void mudaLista(ValueChangeEvent event) {
System.out.println("String: " + event.getNewValue().toString());
Session sessao = CriadorDeSessaoNovo.getSession();
Criteria listagem_query = sessao.createCriteria(Cidade.class).
createAlias("estado", "es").
addOrder(Order.asc("es.est_nom")).
add(Restrictions.eq("es.est_nom", event.getNewValue().toString() ).
ignoreCase());
setCidades(listagem_query.list());
sessao.close();
FacesContext.getCurrentInstance().renderResponse();
}