Я пытаюсь удалить объекты, нажав кнопку удаления в этой форме:
<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
И это работает нормально. Так что я понятия не имею, что не так.
Просто использовал @Getter и @Setter вместо @Data, потому что это некоторые проблемы с равными и hashCode, включенными в аннотацию @Data
Я согласен, используя только геттер и сеттер, а не данные.
Могу ли я иметь класс контроллера и пользовательский компонент?