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…
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…
Como assim alimentando na mão a toda hora?
+1Algué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…
Como assim alimentando na mão a toda hora?
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…
Eu implemento isso buscando no banco de dados…Mas se incluírem uma cidade? como faria?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…
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.
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.Pensei o mesmo.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.
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…
Obrigado, vou procurar saber como implementa um componente customizado…Nunca vi algo do tipo. Não é boa prática, por isso que não acho que você encontraria. [=Queria saber se já existia algum do tipo, mas parece que não…
Obrigado a todos…
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.