2015-06-16 1 views
0

У меня есть следующий в HTMLзначение REST @FormParam нулевые

<form name="myform" method="POST"> 
    <input type="text" id="products" name="products" /> 
</form> 

function myForm() { 
     var url = 'rest/products/details/'; 
     var formData = $("#myform").serializeArray(); 
     $.ajax({ 
     url: url, 
     type: 'POST', 
     contentType : "application/x-www-form-urlencoded", 
     dataType: 'json', 
      data: formData, 
     success: function (data) { 
      //callfunc(data); 
     } 
    }); 
} 

В стороне сервера Java У меня есть следующие

@POST 
@Path("/details") 
public List<Product> findProducts(@FormParam("products") String products) { 
..... 
..... 

log.info("prod "+products); --> getting null 

По некоторым причинам продукции нулевой, даже если я передаю правильные значения из html. Что может быть причиной этого?

+0

Попробуйте ['serialize()'] (https://api.jquery.com/serialize/) вместо ['serializeArray()'] (https://api.jquery.com/serializeArray/). Вы сделали 'console.log (formData)', чтобы посмотреть, как он выглядит? –

ответ

0

Проблема довольно глупа, я использовал имя вместо id, и это привело к получению нулевой на стороне сервера всех элементов формы. Я изменил к

<form id="myform" method="POST"> работает хорошо

Однако <form name="myform" method="POST"> не работает.

0

Consumes Попробуйте аннотацию

@POST 
@Path("/details") 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
public List<Product> findProducts(@FormParam("products") String products) { 
..... 
..... 
+0

Я пробовал это, но все же я не могу получить стоимость продукта. Фактически он равен нулю. – user75ponic

1
function myForm() { 
     var url = 'rest/products/details/'; 
     var formData = "products=asasa" ; 
     $.ajax({ 
     url: url, 
     type: 'POST', 
     contentType : "application/x-www-form-urlencoded", 
     dataType: 'json', 
      data: formData, 
     success: function (data) { 
      //callfunc(data); 
     } 
    }); 
} 

попробовать это и удалить @consumes аннотацию. проблема заключается в функции $("#myform").serializeArray() из jquery.

+0

Id Я использую 'var formData =" products = asasa ";' тогда я могу получать данные на сервере. – user75ponic

+0

как @peeskillet говорит в предыдущем комментарии, попробуйте использовать 'serialize()' вместо 'serializeArray()'. Вот документ: https://api.jquery.com/serialize/ –

+0

Наконец-то я понял вопрос, это было довольно глупо. Вместо id я использовал имя в

, если я использую user75ponic