Spring Boot: получить объект из @RequestParam ("id")

Я пытаюсь удалить объекты, нажав кнопку удаления в этой форме:

<form action = "/applications/delete" method = "get">
  <input type = "hidden" name = "_csrf" value = "${_csrf.token}"/>
  <input type = "hidden" name = "applicationId" value = "${application.id}"/>
  <button type = "submit" class = "btn btn-primary btn-block">
    <p class = "Btn">Delete</p>
  </button>
</form>

И я получаю applicationId в моем

@GetMapping("/delete")
public String deleteApplication(@AuthenticationPrincipal User user, @RequestParam("applicationId") Application application, Model model)

Но у меня есть несколько странных исключений:

2019-04-25 22:08:07.248  WARN 7492 --- [nio-8080-exec-9] o.h.e.l.internal.CollectionLoadContext   : HHH000160: On CollectionLoadContext#cleanup, localLoadingCollectionKeys contained [1] entries
2019-04-25 22:08:07.249  WARN 7492 --- [nio-8080-exec-9] o.h.e.loading.internal.LoadContexts      : HHH000100: Fail-safe cleanup (collections) : org.hibernate.engine.loading.internal.CollectionLoadContext@29b119a7<rs=HikariProxyResultSet@1925344473 wrapping Result set representing update count of -1>
2019-04-25 22:08:07.250  WARN 7492 --- [nio-8080-exec-9] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'JobHunter.domain.Application'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.web.bind.annotation.RequestParam JobHunter.domain.Application] for value '1'; nested exception is java.lang.NullPointerException]

Поэтому он не может преобразовать из String = '1' в объект приложения.

Я использую то же самое в другом шаблоне

<form action = "/vacancy/add" method = "post" class = "form-inline">
  <input type = "hidden" name = "_csrf" value = "${_csrf.token}"/>
  <select name = "departmentId" class = "custom-select mb-2 mr-sm-2">
    <option value = "" disabled selected hidden>Select department</option>
    <option value = "${department.id}">${department.departmentName}</option>
  </select>
  <button class = "btn btn-primary mb-2"= type = "submit">Add</button>
</form>

И еще контроллер:

public String add(@RequestParam("departmentId") Department department

И это работает нормально. Так что я понятия не имею, что не так.

Могу ли я иметь класс контроллера и пользовательский компонент?

Narendar Reddy M 27.04.2019 10:05
0
1
687
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто использовал @Getter и @Setter вместо @Data, потому что это некоторые проблемы с равными и hashCode, включенными в аннотацию @Data

Я согласен, используя только геттер и сеттер, а не данные.

Namo 27.04.2019 09:24

Другие вопросы по теме