Amigos,
Estou com uma duvida simples porem chata. Já procurei bastante aqui no fórum mas nao encontrei uma solução.
Tenho um auto-complete em JSF com richfaces, e estou tentando fazer um reRender em outro campo, porém com os dados de uma variavel do auto complete. É um reRender simples. O usuário digita o nome da cidade, e logo em seguida aparece uma lista das cidades do Brasil. O meu intuito é quando ele selecionar a cidade, já preencher a sigla do estado na input text.
O codigo esta abaixo:
<rich:suggestionbox id="cidadeCadastro" for="cidade" fetchValue="#{city.nomCidade}" suggestionAction="#{utilBean.autocompleteCidade}" width="250" height="250" var="city">
<h:inputText id="cidade" value="#{clienteBean.cidade}" tabindex="1" size="40" maxlength="40">
<a4j:support event="onkeypress" ajaxSingle="true" reRender="estado" data="#{city.sglEstado}" ignoreDupResponses="true" />
</h:inputText>
<h:column>
<h:outputText value="#{city.nomCidade}" />
</h:column>
<h:column>
<h:outputText>-</h:outputText>
</h:column>
<h:column>
<h:outputText value="#{city.sglEstado}" />
</h:column>
</rich:suggestionbox>
</td>
</tr>
<tr>
<td class="label" >Estado: </td>
<td> <h:inputText id="estado" value="#{clienteBean.estado}" tabindex="1" size="40" maxlength="40" readonly="true" /></td>
</tr>
o auto complete no java faz uma consulta no banco via JPA.
public List<Cidade> autocompleteCidade(Object o) {
List<Cidade> l = AdminFacade.getInstance().buscaCidadePorNome(o.toString());
return l;
}
o Codigo da entidade cidade esta aqui:
public class Cidade implements Serializable {
@Id
@Column(name="cod_cidade")
private Integer codCidade;
@Column(name="cod_estado")
private Integer codEstado;
@Column(name="nom_cidade")
private String nomCidade;
@Column(name="sgl_estado")
private String sglEstado;
private static final long serialVersionUID = 1L;
public Cidade() {
super();
}
public Integer getCodCidade() {
return this.codCidade;
}
public void setCodCidade(Integer codCidade) {
this.codCidade = codCidade;
}
public Integer getCodEstado() {
return this.codEstado;
}
public void setCodEstado(Integer codEstado) {
this.codEstado = codEstado;
}
public String getNomCidade() {
return this.nomCidade;
}
public void setNomCidade(String nomCidade) {
this.nomCidade = nomCidade;
}
public String getSglEstado() {
return sglEstado;
}
public void setSglEstado(String sglEstado) {
this.sglEstado = sglEstado;
}
}
Tenho certeza que estou errando em alguma besteira, mas realmente não consegui fazer esse reRender.
Desde já, agradeço pela ajuda.
Abraços,
Ricardo