使用POST方法从URL中提取参数

时间:2015-04-08 08:20:25

标签: java rest post spring-boot

我有这样的事情:

@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;
}

现在我打电话给这个网址:

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

我想从URL中提取参数并将它们放在我的propForm中。

我已尝试将@ModelAttribute替换为@RequestBody,然后改为@RequestParam。它仍然不起作用,运行应用程序时总是得到NullPointerException

请注意,我需要使用POST方法。我已经使用GET方法

2 个答案:

答案 0 :(得分:1)

第一次请确保getters班级中有settersPropForm ...

然后,您需要将Form实体放入模型中:

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;
}

答案 1 :(得分:0)

我认为您的控制器和映射是可以的 但问题是你在映射中期待一个post请求,而你正在调用 http://localhost:8080/prop?att1=blabla&att2=blob&att3=test

现在,这将生成 GET 请求不发布。您不能仅使用网址发送帖子请求。

如果您无法使用表单发送请求,则需要使用任何第三方来生成POST请求 就像你可以使用jquery $.post()

一样

除非您使用模型属性绑定对象,否则att1 att2也无济于事。