我有这样的事情:
@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方法
了答案 0 :(得分:1)
第一次请确保getters
班级中有setters
和PropForm
...
然后,您需要将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
也无济于事。