Boa tarde pessoal,
Eu tenho uma tela de cadastro de empresa…
Eu fiz uma forma de quando eu selecionar a UF, ele lista as cidades daquela UF.
Blz está funcionando certinho…
EU tenho a tela de consulta de Empresa… Essa tela lista todas as empresas cadastradas.
E tem o botão editar, quando eu clicar nesse botão eu quero que ele vá para a tela de cadastro de empresa e populo todos os campos…
Até ai blz… ele populava quando a UF e a cidade eram texts… agora que são combos e são dados na base…com uma tabela estado e uma tabela cidade… eu não consigo popula-los… ele traz todos os objetos preenchidos(empresa, endereco, estado e cidade); mas eu não sei como eu faço para popular o combo… eu achei alguma coisa sobre configurar o faces-config.xml, mas não achei uma forma de como configura-lo…se eh realmente isso que é necessário para fazer.
Quem pude me ajudar eu agradeço muito…segue abaixo o código…
Empresa.xhtml
<h:panelGroup>
<h:selectOneMenu id="estado" value="#{empresaBean.estado.codigo}">
<f:selectItem itemValue="" itemLabel="Selecione..." />
<f:selectItems value="#{empresaBean.estados}" />
<f:ajax execute="estado" render="cidade" event="change" listener="#{empresaBean.actionCarregaCidades}"></f:ajax>
</h:selectOneMenu>
</h:panelGroup>
<h:panelGroup>
<h:selectOneMenu id="cidade" value="#{empresaBean.cidade.codigo}">
<f:selectItem itemValue="" itemLabel="Selecione..." />
<f:selectItems value="#{empresaBean.cidades}"></f:selectItems>
</h:selectOneMenu>
</h:panelGroup>
EmpresaBean.java
public class EmpresaBean {
private Empresa empresa = new Empresa();
private Endereco endereco = new Endereco();
private List<Empresa> lista;
private String destinoSalvar = "/restrito/empresa";
private List<SelectItem> cidades = new ArrayList<SelectItem>();
private Estado estado = new Estado();
private Cidade cidade = new Cidade();
public String novo() {
this.empresa = new Empresa();
this.endereco = new Endereco();
this.estado = new Estado();
this.cidade = new Cidade();
return "/restrito/Empresa";
}
public void salvar() {
FacesContext context = FacesContext.getCurrentInstance();
EmpresaRN empresaRN = new EmpresaRN();
EnderecoRN enderecoRN = new EnderecoRN();
CidadeRN cidadeRN = new CidadeRN();
EstadoRN estadoRN = new EstadoRN();
Cidade cid = cidadeRN.buscarPorId(this.cidade.getCodigo());
Estado est = estadoRN.buscarPorId(this.estado.getCodigo());
this.endereco.setEstado(est);
this.endereco.setCidade(cid);
enderecoRN.salvar(this.endereco);
this.empresa.setEndereco(this.endereco);
if (!empresaRN.salvar(this.empresa)) {
return;
}
FacesMessage facesMessage = new FacesMessage(
"Fornecedor salvo com sucesso");
context.addMessage(null, facesMessage);
this.novo();
}
public String editar() {
this.setEndereco(this.empresa.getEndereco());
this.endereco.setEstado(this.endereco.getEstado());
return "/restrito/empresa";
}
public String excluir() {
EmpresaRN empresaRN = new EmpresaRN();
empresaRN.excluir(this.empresa);
this.lista = null;
return null;
}
/**
* @return the listaEstado
*/
public List<SelectItem> getEstados() {
EstadoRN estadoRN = new EstadoRN();
List<Estado> listaEstado = estadoRN.listar();
List<SelectItem> itens = new ArrayList<SelectItem>(listaEstado.size());
for (Estado s : listaEstado) {
itens.add(new SelectItem(s.getCodigo(), s.getSigla(), s.getNome()));
}
return itens;
}
public void actionCarregaCidades() {
this.cidades = this.getCidadesByEstado();
}
public List<SelectItem> getCidadesByEstado() {
CidadeRN cidadeRN = new CidadeRN();
List<Cidade> cidades = cidadeRN.listar(this.estado.getCodigo());
List<SelectItem> items = new ArrayList<SelectItem>(cidades.size());
for (Cidade c : cidades) {
items.add(new SelectItem(c.getCodigo(), c.getNome()));
}
return items;
}
Se alguém tiver alguma sugestão de melhorar o código eu aceito tbm… porque sou novato…
vlww!!
