Следование это что-то вроде ... псевдокода ... Чтобы проиллюстрировать, что я ищу:
// Setters and Getters ommitted to keep the example short here:
class Address
{
private String street;
private String city;
}
class AddressBookEntry
{
private String name;
private Address address;
}
class MyController
{
public void render(@RenderParam AddressBookEntry entry)
{
...
}
}
Как видите, есть два POJO (Address и AddressBookEntry). Теперь я хотел бы передать AddressBookEntry моему контроллеру в качестве параметра http-запроса. Я полагаю, что URL выглядит так: /target?entry.name=Random-Guy&entry.address.street=Random-Street&entry.address.city=Random-City
.
Насколько я понимаю, @RenderParam не работает таким образом. Мне пришлось бы создать PropertyEditor, который бы брал одну строку и строил из нее мой целевой объект, а это значит, что у меня не может быть индивидуального URL-параметра для каждого (под) свойства.
@ ModelAttribute подходит ближе, но я не смог найти подсказки, если и как вложение объектов может работать с этой аннотацией. Кроме того, эта аннотация работает без «записи». префикс в моем URL выше, что означает, что мне нужно убедиться, что у меня нет нескольких ModelAttributes, которые имеют общее имя свойства, правильно? Это звучит напряженно.
Как я могу решить это?