pessoal, infelizmente não consegui entender bem o funcionamento do JSON + Ajax + Vraptor
Eu vi centenas de exemplo explicando como retornar um objeto do Controller -> View
Quero o contrário
vou ser bem claro no que preciso.
tenho uma lista desse tipo no meu form:
<input type="text" name="epList[i].id" value="${epList.id}">
ou seja, tenho uma lista de objetos, e preciso passar essa list, pelo ajax, como parametro para meu controller
com o submit normal eu fazia assim
dando submit eu fazia assim
function confirmar(){
document.formInscritos.action = "../enviarMensagem";
document.formInscritos.submit();
}
e estou querendo fazer com o AJAX assim
$(function() {
$('#confirmar')
.click(function(e) {
e.preventDefault();
var mensagem = $("#mensagem").val();
var idPesquisa = $("#idPesquisa").val();
$.get("../enviarMensagem/"+mensagem+"&"+idpesquisa, function(){
alert("ok");
});
});
});
A pergunta: como passar minha List pelo AJAX?
obrigado
Você pode fazer no javascript algo do tipo:
var params = {
'mensagem': 'Uma mensagem',
'idPesquisa': 123
'epList': [
{"id": 123, "nome": "Joao"},
{"id": 3, "nome": "José"}
]
};
$.get("../enviarMensagem", params, function(){alert('ok');});
Lucas. Obrigado pela resposta. Acabou que não precisei mais disso na época e esqueci de voltar para agradecer.
Agora preciso novamente. Mas, como pegar esse objeto no meu controller?
Tentei assim:
public void salvar(Object[] objeto);
public void salvar(MinhaClassePersistencia objeto);
public void salvar(List<MinhaClassePersistencia> objeto);
public void salvar(MinhaClassePersistencia[] objeto);
e não tive sucesso com nenhuma das tentativas?
agradeço qqer dica, valeu!!!
Object[] nunca vai funcionar, pq o vraptor não vai saber qual eh o objeto que vc quer instanciar…
como vc tah passando os parâmetros?
se for:
objeto[0].umapropriedade = 1
objeto[0].outrapropriedade = 2
objeto[1].umapropriedade = 3
use (List objeto)
Lucas,
Estou com o mesmo problema ai.
Meu JSON está saindo assim para o VRaptor:
filters[0][name]=name
filters[0][value]=Teste
No meu Controller está assim:
@Post({"/paginated/{first}/{length}"})
public void listPaginated(int first, int length, List<Filter> filters){
try {
result.use(Results.json()).from(dao.paginatedList(first, length, filters,
new HashMap<String, SortOrder>()), "productBO").recursive().serialize();
} catch (Exception e) {
e.printStackTrace();
}
}
Mesmo asssim estou recebendo null no parâmetro filters no meu controller.
Outra informação, estou usando AngularJS, a chamada ficou assim:
$scope.filterBy = {'filters' : [{"name":"name", "value":$scope.search}]};
var requestURL = '/vraptor-angular/products/paginated/'+$scope.first+'/'+$scope.pageSize;
$http.post(requestURL, $.param($scope.filterBy)).success(function(data) {
$scope.products = data.productBO.products;
$scope.total = data.productBO.totalProducts;
$scope.totalPages = ($scope.total % $scope.pageSize == 0) ? $scope.total/$scope.pageSize : parseInt($scope.total/$scope.pageSize)+1;
var pages = new Array();
for(var i=0; i<$scope.totalPages; i++){
pages[i] = i+1;
}
$scope.availablePages = pages;
$timeout(function(){AjaxCallHandler.end()}, 500, true);
});
Alguma ideia do que eu possa fazer pra o VRaptor popular o parâmetros filters?