Spring 控制器以类似于 GET 和 POST 方法的方式工作

Spring controller to work similarly to both GET and POST methods

我的 Spring 应用程序中有如下方法

@RequestMapping(value = "/search-result-doctors", method = RequestMethod.POST)
public String getDoctorSearchResults(String LastName, String Hospital, String Specialty, String date1, ModelMap model) {
    //some logics

     return "doctorchannelling/search-result-doctors";
}

进入页面 "search-result-doctors" 后,当我在 URL 中按回车键时,它必须保留在同一页面中。因为它是一个 GET 请求,所以我用方法值 RequestMethod.GET.

再次编写了相同的方法
@RequestMapping(value = "/search-result-doctors", method = RequestMethod.GET)
public String getDoctorSearchResults(String LastName, String Hospital, String Specialty, String date1, ModelMap model) {
    //some logics

    return "doctorchannelling/search-result-doctors";
}

由于 GET 请求中的参数值 String LastName、String Hospital、String Specialty、String date1 不可用,我遇到了异常

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException

我该如何解决这个问题

提前致谢

实际上你可以只定义一个方法来处理 GET 和 POST

@RequestMapping(value = "/search-result-doctors", method = { RequestMethod.POST, RequestMethod.GET })

如果你在你的一些逻辑的某个地方得到 NPE,只需检查哪些参数是空的。

除了@StanislavL 所说的,你应该用 @RequestParam(required=false) 注释你的参数,所以

public String getDoctorSearchResults(@RequestParam(required=false) String LastName,@RequestParam(required=false) String Hospital, @RequestParam(required=false) String Specialty, @RequestParam(required=false) String date1, ModelMap model) {

结合@StanislavL 给出的方法注释和 NullPointer 检查,应该会给你你想要的