2013-11-25 4 views
1

У меня есть данные HTML-формы и передается методу RESTful POST. Я заметил, что если @FormParam объявлен какRESTful @FormParam 400 Плохой запрос

@POST 
public void commitProjects(
@FormParam("projectId") 
     int projectId) 

и если ProjectID равно нулю или пусто, то при вызове метода POST выполняется из браузера, я получаю 400 Bad Request ошибку.

Что может быть причиной этого и как лучше всего подходит для преодоления такой ситуации?

Edit 1

из браузера

projectDesc=test&projectId= 

и метод вызывается из Jquery, как

method: 'POST', 
//dataType: "json", 
contentType : "application/x-www-form-urlencoded", 
url: '/rest/projects', 

HTTP Header

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:en-US,en;q=0.8;q=0.6 
Cache-Control:max-age=0 
Connection:keep-alive 
Content-Length:625 
Content-Type:application/x-www-form-urlencoded 
Cookie:JSESSIONID=0a0a0a0a231b787e42dd10d840d3b035d5998c574416 
Host:xxxxxx:8987 
Origin:http://xxxxx:8987 
Referer:http://xxxxx:8987/project/test.jsp 
User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36 

данные Форма

projectDesc=test 
projectId= 
+0

Покажите нам, как 'Post' нулевое или пустое значение. Каков ваш HTML? –

+0

@ LutzHorn Я включил в Редактировать 1 моего вопроса. Спасибо – user75ponic

ответ

2

null или empty не может быть проанализирован как 32-разрядное целое число, и HTTP 400 (ошибка клиента) ответ возвращается.

, если значение не существует, то установить по умолчанию следующим образом

@POST 
public void commitProjects( 
    @DefaultValue("0") @FormParam("projectId") int projectId 
    ) 

More Details

+0

Кажется, что ключ-значение отсутствует в запросе, в форме отсутствует параметр формы. – Shamse

+0

Если пользователь не выбрал никакого значения, элемент формы будет пустым или пустым. – user75ponic

+0

Мое предложение было бы непосредственно ударить по вашему обслуживанию отдыха из вашей HTML-формы, чтобы вы могли получить проблемы. – Shamse

2

Применение @DefaultValue:

@POST 
public void commitProjects(@FormParam("projectId") @DefaultValue("0") int projectId) 
+0

Да, это должна быть строка. Спасибо за редактирование. –

+0

Я пробовал '@DefaultValue (« 0 »)', однако это не помогло решить проблему. – user75ponic

+0

Опубликовать свой HTMl-код – Shamse

Смежные вопросы