[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 
Mensagens enviadas por: brunoefa  XML
Perfil de brunoefa -> Mensagens enviadas por brunoefa [6]
Autor Mensagem
E ai André beleza?

To meio na correria aqui então vou postar as classes que fazem parte do exemplo sem muitas explicações, aí qualquer dúvida você posta de novo que agente vai trocando idéias.
O meu caso eu escolho um produto em uma lista e de acordo com este produto ele carrega via ajax uma outra lista com produtos similares.

Código JSP com o detalhe
Code:
 <t:detalhe name="lista">
 	
 	.
 	.
 	.
 	
 	<t:property name="produtoorigem" onchange="campo = ${index}; callbackFunction = ajaxCallBackFunction; var c = this.value; if(c != ''){sendRequest('/aplicacao/modulo/controller/ActionDoAjax?cdproduto='+c)}"/>
 	<c:choose>
 		<c:when test="${n:ognl(\"index instanceof java.lang.Number\")}">
 			<t:property name="produtodestino" itens="${listaProdutosDestino[index]}"/>
 		</c:when>
 		<c:otherwise>
 			<t:property name="produtodestino" itens="null"/>
 		</c:otherwise>
 	</c:choose>		
 	
 	.
 	.
 	.
 
 </t:detalhe>
 


Função JavaScript que renderiza o resultado na tela sem recarregar o restante da página
Code:
 <script language="javascript" type="text/javascript">
 	var campo;
 	function ajaxCallBackFunction(data){
 		eval(data);
 		var element = document.forms[0]['listaconfigdeparaitem[' + campo + '].produtodestino'];
 		element.innerHTML = '';
 		var i = 0;
 		for (i = 0; i < mapa.length; i++) {
 			element.options[i] = new Option(mapa[i][1],mapa[i][0]);
 		}
 	}
 </script>
 


Controller com a action que será chamado pelo ajax
Code:
 package br.linkcom.util.controller;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.springframework.web.servlet.ModelAndView;
 
 import br.com.linkcom.neo.bean.annotation.Bean;
 import br.com.linkcom.neo.controller.Controller;
 import br.com.linkcom.geral.bean.Produto;
 import br.com.linkcom.geral.dao.ProdutoDAO;
 
 @Controller(path="/modulo/controller/ActionDoAjax")
 	
 @Bean
 public class ConfigDeParaController implements org.springframework.web.servlet.mvc.Controller{
 	
 	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
 		List<Produto> listaProduto = new ArrayList<Produto>();
 		try {
 			Integer cdprodutoorigem = AjaxController.getParametro(request,response,"cdproduto");
 			Produto produto = new Produto();
 			produto.setCdproduto(cdprodutoorigem);
 
 			//Aqui é o local onde eu busca a lista de similares de acordo com o produto de origem escolhido
 			listaProduto = ProdutoDAO.getInstance().findSimilares(produto);
 		} 
 		catch (Exception e) {
 			response.getOutputStream().print("javascript:alert('" + e.getMessage() + "');");
 		}
 		response.setContentType("text/html; charset=ISO-8859-1");
 		printVar(response.getOutputStream(), listaProduto);
 		return null;
 	}
 	
 	private void printVar(ServletOutputStream out, List<Produto> lista) throws IOException {
 		StringBuffer sbVar = new StringBuffer();
 		sbVar.append("var mapa = [");
 		sbVar.append("[\"<null>\",\"\"],");
 		
 		String cdproduto = "";
 		String nome = "";
 		
 		for (Produto produto : lista) {
 			cdproduto = produto.getCdproduto().toString();
 			nome = produto.getNomeResumido();
 			sbVar.append("[\"br.com.linkcom.geral.bean.Produto[cdproduto=" + cdproduto + "]\",\"" + nome + "\"],");
 		}
 		sbVar.replace(sbVar.length() - 1, sbVar.length(), "");
 		sbVar.append("];");
 		out.print(sbVar.toString());
 	}	
 }
 


Ajax Controller com métodos úteis para manipulação de parâmetros
Code:
 package br.linkcom.util.controller;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 	
 public class AjaxController {
 	
 	public static Integer getParametro(HttpServletRequest request, HttpServletResponse response, String campo) {
 		Integer cdparametro = new Integer(0);
 		String parametro = request.getParameter(campo) != null ? request.getParameter(campo) : "";
 		Matcher casamento = Pattern.compile(".{0,60}?\\["+campo+"=(\\d+)\\]").matcher(parametro);
 		if (casamento.matches()) {
 			cdparametro = new Integer(casamento.group(1));
 		}
 		return cdparametro;
 	}
 	
 	public static String getParametroString(HttpServletRequest request, HttpServletResponse response, String campo) {
 		String parametroString = new String("");
 		String parametro = request.getParameter(campo) != null ? request.getParameter(campo) : "";
 		Matcher casamento = Pattern.compile(".{0,60}?\\["+campo+"=(\\d+)\\]").matcher(parametro);
 		if (casamento.matches()) {
 			parametroString = new String(casamento.group(1));
 		}
 		return parametroString;
 	}
 }
 


Agora é só quebrar um poquinho a cabeça pra implementar na sua situação aí andré. Qualquer dúvida manda ae...
Blz Andre!

Quando você chama o método save, ele chama o saveOrUpdate(bean) passando o bean que você deseja salvar por parâmetro. O bean é passado por referência então assim que o bean é salvo na linha seguinte ele já tem o cd carregado.

Code:
super.salvar(request, bean);

o método saveOrUpdate é chamado, logo;
Code:
bean.getCdbean

pode ser chamado.


Valeu Pedro!!!

té mais.
Justamente Pedro, apenas uma pesquisa simples por nome. Caso o usuário não preencha o campo, o filtro retorna todos os registros existentes.

Valeu.
Olá,

Eu gostaria de saber como faço com que um filtro consulte através de um determinado campo (nome por exemeplo) depois de já ter inserido o campo
ncessário no arquivo jsp de listagem.
Code:
<t:property name="Nome"/>
Obrigado.
Olá,
Tenho um combobox com os valores sim e não, utilizei então os parâmetros abaixos

Code:
 <t:property name="concluido" includeBlank="false" trueFalseNullLabels="Sim,Não"/>
 


gostaria de saber como faço para que o meu valor default do combo seja nulo pois assim me é requisitado no caso de uso.

Obrigado.
 
Perfil de brunoefa -> Mensagens enviadas por brunoefa [6]
Ir para:   
Powered by JForum 2.1.7 © JForum Team