Alguém ai já pensou em desenvolver um componente em JSF para carregar cidades e estados em um combo?
É chato demais ter que ficar alimentando o combo na mão toda hora…
Alguém ai já pensou em desenvolver um componente em JSF para carregar cidades e estados em um combo?
É chato demais ter que ficar alimentando o combo na mão toda hora…
[quote=faelbsr]Alguém ai já pensou em desenvolver um componente em JSF para carregar cidades e estados em um combo?
É chato demais ter que ficar alimentando o combo na mão toda hora…[/quote]
Como assim alimentando na mão a toda hora?
[quote=romarcio][quote=faelbsr]Alguém ai já pensou em desenvolver um componente em JSF para carregar cidades e estados em um combo?
É chato demais ter que ficar alimentando o combo na mão toda hora…[/quote]
Como assim alimentando na mão a toda hora?[/quote]+1
Por que não tem isso no DB e busca de lá? O.o
Eu implemento isso buscando no banco de dados…
Eu queria saber se não seria interessante já existir um componente pronto para só chamar ele e já listar os estados e cidades sem precisar nenhuma busca ao banco de dados ou outra fonte…
Pois isso é algo que sempre estamos precisando usar em mais de uma parte do sistema…
[quote=faelbsr]Eu implemento isso buscando no banco de dados…
Eu queria saber se não seria interessante já existir um componente pronto para só chamar ele e já listar os estados e cidades sem precisar nenhuma busca ao banco de dados ou outra fonte…
Pois isso é algo que sempre estamos precisando usar em mais de uma parte do sistema…[/quote]Mas se incluírem uma cidade? como faria?
Até agora não entendi qual o problema… O.o
Tem como você colocar um pseudo código de como seria esse componente?
Mas imagina um componente armazenando milhares de cidades, é meio estranho isso. Qual seria o tamanho desse componente em bytes? Talvez mega bytes para armazenar apenas as cidades do Brasil.
Constrói então um web-service, gera uma biblioteca para ler esse web-service sempre que necessário e adiciona a biblioteca ao seu projeto e faz ela carregar a lista de cidades no componente sempre que preciso.
[quote=romarcio]Mas imagina um componente armazenando milhares de cidades, é meio estranho isso. Qual seria o tamanho desse componente em bytes? Talvez mega bytes para armazenar apenas as cidades do Brasil.
Constrói então um web-service, gera uma biblioteca para ler esse web-service sempre que necessário e adiciona a biblioteca ao seu projeto e faz ela carregar a lista de cidades no componente sempre que preciso.[/quote]Pensei o mesmo.
Por isso pedi um pseudo código para tentar entender melhor o que ele quer.
Realmente escrever tudo em um bloco de código é sem sentido. O.o
Vou explicar melhor o que estou propondo.
Abaixo segue o código de como eu implemento um combo [select] Estado e Cidade. A minha ideia seria um componente que eu chamaria e ele já carregaria pra mim todos os estados e cidades brasileiros sem eu precisar ficar buscando no banco de dados, sacou;
JSP
<p:column>Estado:</p:column>
<p:column>
<p:selectOneMenu id="estado" style="width: 100%" value="#{pessoaFaces.selectedEstado}">
<f:selectItems var="e" itemLabel="#{e}" value="#{pessoaFaces.estados}"></f:selectItems>
<p:ajax event="change" listener="#{pessoaFaces.atualizaCidades}" update="cidade"></p:ajax>
</p:selectOneMenu>
</p:column>
<p:column>Cidade:</p:column>
<p:column>
<p:selectOneMenu
required="true"
requiredMessage="O campo CIDADE é de preenchimento obrigatório"
id="cidade" style="width: 100%" value="#{pessoaFaces.selectedAluno.cidades}">
<f:converter converterId="CidadesConverter"></f:converter>
<f:selectItems var="c" value="#{pessoaFaces.cidades}" itemValue="#{c}" itemLabel="#{c.cidade}"></f:selectItems>
</p:selectOneMenu>
</p:column>
BEAN
private String[] listaEstados = {"", "AC-ACRE",
"AL-ALAGOAS",
"AP-AMAPÁ",
"AM-AMAZONAS",
"BA-BAHIA",
"CE-CEARÁ",
"DF-DISTRITO FEDERAL",
"GO-GOIÁS",
"ES-ESPÍRITO SANTO",
"MA-MARANHÃO",
"MT-MATO GROSSO",
"MS-MATO GROSSO DO SUL",
"MG-MINAS GERAIS",
"PA-PARÁ",
"PR-PARAÍBA",
"PA-PARANÁ",
"PE-PERNAMBUCO",
"PI-PIAUÍ",
"RJ-RIO DE JANEIRO",
"RN-RIO GRANDE DO NORTE",
"RS-RIO GRANDE DO SUL",
"RO-RONDÔNIA",
"RR-RORÂIMA",
"SP-SÃO PAULO",
"SC-SANTA CATARINA",
"SE-SERGIPE",
"TO-TOCANTINS"};
public List<String> getEstados() {
List<String> toReturn = Arrays.asList(listaEstados);
return toReturn;
}//end method
public void atualizaCidades() {
CidadesDao cDao = new CidadesDao();
String estado = "";
if (!selectedEstado.equals("")) {
String[] split = selectedEstado.split("-");
estado = split[0];
}//end if
cidades = cDao.getCidadesByEstado(estado);
}
Você pode construir um componente que faça isso sempre com JSF de modo em simples. Pesquise na net: jsf custom components
Desse modo você terá um componente que será sempre reutilizado e faça a mesma coisa.
Obrigado, vou procurar saber como implementa um componente customizado…
Queria saber se já existia algum do tipo, mas parece que não…
Obrigado a todos…
[quote=faelbsr]Obrigado, vou procurar saber como implementa um componente customizado…
Queria saber se já existia algum do tipo, mas parece que não…
Obrigado a todos…[/quote]Nunca vi algo do tipo. Não é boa prática, por isso que não acho que você encontraria. [=
A ideia do componente é interessante. Também estou pensando em implementar um componente, pois tenho dois tipos de códigos espalhados no sistema: Pais -> Estado -> Cidade -> Bairro e Pais -> Estado -> Cidade. Quando um estado muda, por exemplo, é necessário atualizar os campos Cidade e Bairro. Assim, no caso onde se deseja selecionar o bairro (que depende da cidade que depende do estado que depende do pais), é necessário ter os campos pais, estado e cidade no controller e realizar os tratamentos necessários quando esses campos mudam.
No caso, estou pensando em implementar 3 componentes:
SelectEstado (Pais -> Estado)
SelectCidade (Pais -> Estado -> Cidade)
SelectBairro (Pais -> Estado -> Cidade -> Bairro)
O pseudo-código de uso seria mais ou menos assim:
<bs:selectBairro value="#{controller.entity.endereco.bairro}"/>
Esse componente renderezaria 3 : Estado, Cidade e Bairro.