Bom dia amigos, ontem passei o dia tentando resolver um problema e não consegui solução. Eu tenho o seguinte codigo HTML:
<form action="/pagina/teste">
<ul class="opcoes">
<li><a id="1" href="">Opcao 1</a></li>
<li><a id="2" href="">Opcao 2</a></li>
<li><a id="3" href="">Opcao 3</a></li>
<li><a id="4" href="">Opcao 4</a></li>
<li><a id="5" href="">Opcao 5</a></li>
</ul>
<button type="submit">Enviar</button>
</form>
Quando o usuário clicar sobre uma opção, ele acaba disparando uma função jquery que atribui uma classe de estilo ao link chamada “checked”. Isto irá simular um comportamento de checkbox.
Meu arquivo javascript ficou assim:
$(document).ready(function() {
$('opcoes a').click(function() {
$(this).addClass('checked');
});
$('form').submit(function() {
var json = '{"itens": [';
var itens = '';
$('.opcoes a.checked').each(function() {
var item = '{"id": '+ $(this).attr('id') +'}';
itens += itens == ''? item : ','+ item;
});
json += itens +']}';
$.post($(this).attr('action'), jQuery.parseJSON(json));
});
});
Como pode ser percebido, foi utilizado JSON para tentar enviar. Digo tentar, pois me faltou idéias de como enviar esta lista de itens selecionados. O meu controlador, ficou da seguinte forma:
@Controller
@RequestMapping(value = "/pagina/**")
public class PaginaController {
@RequestMapping(value = "/pagina/teste", method = RequestMethod.POST)
public String teste(@RequestParam Object data) {
//Faz qqr coisa aqui
}
}
Quando é clicado no botão Enviar, não chega nada no Controller (coloquei um breakpoint para ver se estava dando certo) e no inspetor de objetos do chrome, apareceu este erro:
POST http://localhost:8084/Projeto/pagina/teste 400 (Bad Request) jquery.js:4
f.support.ajax.f.ajaxTransport.send jquery.js:4
f.extend.ajax jquery.js:4
f.each.f.(anonymous function) jquery.js:4
(anonymous function) functions.wizard.js:42
f.event.dispatch jquery.js:3
f.event.add.h.handle.i
Sei que estou fazendo algo errado, mas preciso de ajuda de como resolver este problema.
Obrigado!