[Logo] Neo Framework Forum
  [Search] Busca   [Recent Topics] Tópicos Recentes   [Members]  Lista de Usuários   [Groups] De volta para a página principal 
[Register] Registrar / 
[Login] Entrar 
Combobox dinamico  XML
Índice dos Fóruns -> Dúvidas
Autor Mensagem
guilherme.pimentel
Template
[Avatar]

Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline

O Framework Neo tem algum recurso que ajuda no desenvolvimento de um combo dinamico, como por exemplo a entrada de email no gmail em que a cada letra digitada o sistema faz uma consulta e retorna o resultado em uma lista como se fosse a lista de um combo, ele ajude nesse desenvolvimento????


Obrigado,

GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE
rogel.garcia
Xiita

Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline

Especificamente para completar as opções de um text o NEO não possui nada pronto. Mas nas chamadas AJAX ele possui uma tag que pode ser útil, a ajax:call. Utilizada em conjunto com View.getCurrent().

O código especifico para fazer o 'code completion' pode ser encontrado facilmente na internet, aí é só integrar com a seguinte solução.

Controller

Code:
 package org.neoframework.teste;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.springframework.web.servlet.ModelAndView;
 
 import br.com.linkcom.neo.controller.Controller;
 import br.com.linkcom.neo.controller.DefaultAction;
 import br.com.linkcom.neo.controller.MultiActionController;
 import br.com.linkcom.neo.core.web.WebRequestContext;
 import br.com.linkcom.neo.view.ajax.View;
 
 @Controller(path="/modulo/CodeComplete")
 public class CodeCompleteController extends MultiActionController{
 
     @DefaultAction
     public ModelAndView pagina(WebRequestContext request, Filtro filtro){
         return new ModelAndView("pagina", "filtro", filtro);
     }
 	
     public void ajaxCodeComplete(WebRequestContext request, Filtro filtro){
         //aqui ficaria o código que monta as opções
 	
         //o código a seguir é ficticio apenas para devolver algo para o cliente
         String nome = filtro.getNome();
 				
         List<String> opcoes = new ArrayList<String>();
         opcoes.add(nome + ((char)(Math.random()*30+65)));
         opcoes.add(nome + ((char)(Math.random()*30+65)));
         opcoes.add(nome + ((char)(Math.random()*30+65)));
         opcoes.add(nome + ((char)(Math.random()*30+65)));
 		
         View view = View.getCurrent(); // a variável view provê funcionalidades para lidar com Ajax
         for (String string : opcoes) {
             view.println(string);
             view.println("<BR>");//o println do view será enviada para a variável data lá no JSP
         }
     }
 }


Filtro

Code:
 package org.neoframework.teste;
 
 public class Filtro {
 
     String nome;
 
     public String getNome() {
         return nome;
     }
 
     public void setNome(String nome) {
         this.nome = nome;
     }
 }
 


JSP

Code:
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <%@ taglib prefix="n" uri="neo"%>
 <%@ taglib prefix="t" uri="template"%>
 <%@ taglib prefix="ajax" uri="ajax"%>
 
 <n:bean name="filtro">
     <t:property name="nome" mode="input" onkeypress="codeComplete(this.value)"/>
 	
     <div id="propostas">
     </div>
 </n:bean>
 
 <ajax:call 
     functionName="codeComplete(string)"	
     action="ajaxCodeComplete" 
     callback="function(data){montarPropostas(data);}" 
     parameters="javascript:'nome='+string"
 />
 <%-- functionName: Nome da função Javascript que será criada, recebe um parâmetro --%>
 <%-- action: Nome da action (no controller) para onde deve ser enviada a requisição --%>
 <%-- callback: Indica o que deve ser feito com o resultado, a varável data é o que o servidor devolveu --%>
 <%-- 
     parameters: Indica quais parametros devem ser enviados na requisição, o javascript: indica que estamos colocando código javascript e não texto puro 
         'nome='+string Estamos montando os parâmetro como é monta a URL. Estamos concatenando nome= com o conteúdo da variável string. 
         string é o nome do parâmetro recebido no método (indicado em functionName)
 --%>
 
 <script type="text/javascript">
     function montarPropostas(data){
         document.getElementById('propostas').innerHTML = data;
         //aqui seria montada a funcionalidade javascript para as opções enviadas pelo servidor
     }
 </script>
 


Qualquer dúvida pode perguntar.. flw
 
Índice dos Fóruns -> Dúvidas
Ir para:   
Powered by JForum 2.1.7 © JForum Team