2015-04-08 15 views
1

у меня есть что-то вроде этого:Извлечение параметров из URL с методом POST

@RestController 
@RequestMapping("/prop") 
public class PropController { 

@RequestMapping(method = RequestMethod.POST) 
public Prop getProp(@ModelAttribute PropForm propForm) { 
    //calling methods and stuff using propForm 
} 
} 

Мой класс PropForm:

@Data 
public class PropForm { 
      private String att1; 
      private String att2; 
      private String att3; 
} 

Теперь я называю этот URL:

http://localhost:8080/prop?att1=blabla&att2=blob&att3=test

Я хочу извлечь параметры из URL и поместить их в свой propForm.

Я попытался заменить @ModelAttribute на @RequestBody, а затем на @RequestParam. Он все еще не работает, я всегда получаю NullPointerException при запуске приложения.

Пожалуйста, обратите внимание, что мне нужно использовать метод POST. У меня уже есть он работает, используя метод GET

+0

Я думаю, вы могли бы попробовать что-то вроде этого @QueryParam ("att1") String att1 – HJK

+0

Как вы это называете и каковы детали этого «NullPointerException»? – Steve

ответ

0

I думаю, что контроллер и сопоставление одобрены.
Но проблема в том, вы ожидаете пост запрос в отображении, и вы звоните http://localhost:8080/prop?att1=blabla&att2=blob&att3=test

Теперь это будет генерировать GET запросне вывесим. Вы не можете отправлять почтовый запрос, используя только URL.

Если вы не можете использовать форму для отправки запроса, то вам необходимо использовать 3 участника для создания запроса POST
, как вы можете использовать jquery $.post()

А также att1att2 не поможет, если вы не связать объект с атрибутом модели.

+0

Действительно, видимо, это просто невозможно. Спасибо, что объяснили почему. – Mel

+0

Я рад, что это помогло. пожалуйста. – Saif

1

ПЕРВЫЙ Убедитесь, что вы getters и setters в вашем PropForm классе ...

Затем вам нужно положить в вашу модель Форму лица:

model.put("NAME", propForm); 

И объявить метод как это:

@RequestMapping(method = RequestMethod.POST) 
public Prop getProp(
    @ModelAttribute PropForm propForm 
    @Valid @ModelAttribute("NAME") PropForm propForm) 
    //     ^you're missing the name! 
{ 
    // do your stuff.... 


    return (Prop) propForm; 
} 
+0

У меня пока нет. И я бы хотел использовать свой класс PropForm вместо отдельных атрибутов, так как att1, att2 и att3 - просто примеры, список атрибутов довольно длинный – Mel

+0

Обязательно ли иметь представление? Все, что у меня есть, это URL, поэтому я действительно не знаю, как поставить имя – Mel

+1

не очень, проверьте мое последнее изменение ...;) –

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