Spring контроллер работает аналогично методам GET и POST

1

У меня есть метод, как показано ниже в моем приложении 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";
}

после перехода на страницу "поиск-результат-врачи", когда я нажимаю кнопку "Enter" в 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, String date1 в запросе GET Я получаю исключение

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

Как решить эту проблему?

заранее спасибо

  • 0
    Не могли бы вы предоставить полную трассировку стека и пример вызова этого конкретного URL?
Теги:
spring-security
spring
spring-mvc

2 ответа

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) {

в сочетании с аннотацией метода и проверками NullPointer, предоставленными @StanislavL, должны дать вам то, что вы хотите

  • 0
    Я использую эти значения параметров для создания динамической страницы. Поэтому мне нужны параметры, передаваемые во время метода POST в методе GET. при использовании @RequestParam (required = false) я не получаю никаких значений параметров в запросе GET
  • 0
    По вашему POST-запросу вы можете сохранить ваши параметры в сеансе, а в GET получить из него. Хранение параметров в сеансе или @SessionAttributes - ваш единственный вариант, для случая, который вы описываете, потому что нажатие клавиши ввода в браузере никогда не передаст параметры снова
Показать ещё 1 комментарий
1

Фактически вы можете определить только один метод обработки как GET, так и POST

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

Если вы получаете NPE где-то в своей логике, просто проверьте, какие параметры пусты.

  • 0
    как узнать тип запроса - будь то пост или попасть внутрь метода контроллера?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню