Galera sera que alguem pode me ajudar,tenho o seguinte cenário:
Tenho a Class Chamado onde tenho
idchamado
login
status
titulochamdo
Descricaochamado
…
Tenho outra class logs onde tenho
idlog
idchamado
status
titulolog
descricaolog
…
Essa 2 class funciona assim
Tenho um formulario no qual quando passo um o IDCHAMADO ele me carrega o form
[code] @RequestMapping(“mostraChamadoLogs”)
public String mostra(int id,Model model){
ChamadoDAO dao = new ChamadoDAO();
model.addAttribute(“chamado”,dao.buscaPorId(id));
List chamado = dao.buscaLogId(id);
model.addAttribute("chamadoLogs ",dao.buscaLogId(id));
return “chamados/addLogsChamado”;
Se você quer simplesmente abrir o modal com os dados do log, sem recarregar tudo que está visível, vai ter que recorrer para ajax mesmo. Você faz uma requisição (recomendo usar jquery) pro teu controlador, ele retorna apenas os dados (no formato json, por exemplo). Aí via javascript você vai tornar o modal visível com os dados recebidos.
O controlador pouco muda. Você pode anotar o método com @ResponseBody e, no requestMapping, indicar que ele vai responder com json (se é o que vc quer), basta colocar produces=“application/json”.
Usando jquery, fazer uma requisição ajax é bem simples. Eis um exemplo do código:
$.ajax({
url: 'url_de_conexao', //mostraDetalhesLog, por exemplo
dataType: 'application/json',
data: dados_para_enviar //aqui tu so precisa passar o id do chamado
}).success(function(result) {
// qdo voltar os dados do server, vai cair nesta funcao
// result vai ser o objeto chamado (em javascript, claro)
}).error(function() {
//se der algum problema, cai aqui
});
O teu controller, ficaria parecido com isto:
@RequestMapping("mostraDetalheLog", produces="application/json")
@ResponseBody //nao vai redirecionar, resposta vai direto deste metodo
public String mostraDetalheLog(int idlog){
ChamadoDAO dao = new ChamadoDAO();
Chamado chamado = dao.buscaLogId(Id));
return chamado; //spring ja vai converter para json... a api jackson tem que estar no path
}
[quote=wagnerfrancisco]Usando jquery, fazer uma requisição ajax é bem simples. Eis um exemplo do código:
$.ajax({
url: 'url_de_conexao', //mostraDetalhesLog, por exemplo
dataType: 'application/json',
data: dados_para_enviar //aqui tu so precisa passar o id do chamado
}).success(function(result) {
// qdo voltar os dados do server, vai cair nesta funcao
// result vai ser o objeto chamado (em javascript, claro)
}).error(function() {
//se der algum problema, cai aqui
});
O teu controller, ficaria parecido com isto:
@RequestMapping("mostraDetalheLog", produces="application/json")
@ResponseBody //nao vai redirecionar, resposta vai direto deste metodo
public String mostraDetalheLog(int idlog){
ChamadoDAO dao = new ChamadoDAO();
Chamado chamado = dao.buscaLogId(Id));
return chamado; //spring ja vai converter para json... a api jackson tem que estar no path
}
[/quote]
Cara eu fiz assim:
Criei o Ajax que envia pro meu Spring o idLog .
<script type="text/javascript ">
function recebeLogs(idlog){
$.get("mostraDetalheLog?idlog=" + idlog,function(dadosRecebidos){
$('#modaldiv').html(dadosRecebidos); // div a qual ele deveria receber os dado do spring .
});
}
</script>
Meu controller
[code] @RequestMapping(“mostraDetalheLog”)
public String mostraDetalheLog(int idlog,HttpServletResponse response,Model model){
System.out.println("Entrei no DETALHE");
System.out.println(idlog + " ID LOGS");
ChamadoDAO dao = new ChamadoDAO();
model.addAttribute("log",dao.buscaPorIdLog(idlog));
return "view" ;
}[/code]
Até aqui parece funcionar o RequestMapping está recebendo o id corretamente mais quando necessito exibir os dados que ele retorna aqui ele simplesmente não mostra nada no formulário.
Segue os detalhes da div o spring deveria retornar os dados.