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

Extracting parameters from URL with POST method

我有这样的东西:

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

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

我的 PropForm class :

@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 方法让它工作

FIRST 确保 getterssettersPropForm class...

然后,您需要将表单实体放入您的模型中:

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

我觉得你的控制器和映射没问题。
但问题是您在映射中期待 post 请求,并且您正在调用 http://localhost:8080/prop?att1=blabla&att2=blob&att3=test

现在这将生成一个 GET 请求 而不是 Post。您不能仅使用 url.

发送 post 请求

如果您不能使用表单发送请求,那么您需要使用任何第 3 方来生成 POST 请求
就像你可以使用 jquery $.post()

而且 att1 att2 也无济于事,除非您将对象与模型属性绑定。