Я хотел бы получить адрес получателя из списка переключателей ввода.Класс DestinationAddress имеет следующий вид:
public class DestinationAddress {
private Integer destinationAddressId;
private String name;
private Location location;
private User owner;
public DestinationAddress(String name, Location location, User owner) {
this.name = name;
this.location = location;
this.owner = owner;
}
public DestinationAddress() {
}
// getter and setter
}
Контроллер, обрабатывающий получение и публикацию, выглядит следующим образом:
@PreAuthorize("hasRole('USER')")
@GetMapping(value = "/select-address")
public String selectAddress(Principal principal, Model model) {
List<DestinationAddress> addresses = destinationAddressService.getAllByUsername(principal.getName());
model.addAttribute("destinationAddresses", addresses);
model.addAttribute("destinationAddress", new DestinationAddress());
return "purchase/select-address";
}
@PreAuthorize("hasRole('USER')")
@PostMapping(value = "/select-address")
public String selectAddress(@ModelAttribute DestinationAddress destinationAddress, Principal principal) {
Purchase purchase = purchaseService.addPurchase(principal.getName(), destinationAddress);
return "redirect:/purchases/pay/" + purchase.getPurchaseId();
}
И HTML-страница имеет следующий вид:
<form th:object="${destinationAddress}" method="post">
<fieldset>
<legend>Your addresses</legend>
<ul>
<li th:each="destinationAddress : ${destinationAddresses}">
<input type="radio" th:field="*{destinationAddressId}" th:value="${destinationAddress.destinationAddressId}" />
<label th:for="${#ids.prev('destinationAddress.destinationAddressId')}" th:text="${destinationAddress}"></label>
</li>
</ul>
</fieldset>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
Сообщение об ошибке следующее:
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'destinationAddressId' available as request attribute
Я не знаю, в чем здесь проблема.Я не знаю, какой тип форма возвратит контроллеру.Так что я не знаю, какую переменную передать в модель, а какую получить из метода пост-контроллера.Целое число или адрес назначения?Я не могу найти что-то, гуглящее это, только маленькие кусочки кода без каких-либо объяснений.Какие-либо предложения?