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

时间:2015-02-09 04:58:39

标签: java spring spring-mvc spring-security

我的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";
}

进入页面"搜索结果 - 医生"当我按下只需输入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";
}

由于参数值不可用String LastName,String Hospital,String Specialty,GET请求中的字符串date1我得到例外

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

如何解决此问题

提前致谢

2 个答案:

答案 0 :(得分:1)

实际上,您只能定义一种方法来处理GET和POST

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

如果你在某种逻辑的某处获得NPE,只需检查哪些参数为空。

答案 1 :(得分:1)

除了@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检查,应该给你你想要的东西