Самый простой способ использовать составной объект как RequestParam в Spring - PullRequest
0 голосов
/ 11 января 2012

Следование это что-то вроде ... псевдокода ... Чтобы проиллюстрировать, что я ищу:

// 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, которые имеют общее имя свойства, правильно? Это звучит напряженно.

Как я могу решить это?

1 Ответ

1 голос
/ 11 января 2012

Это ситуация, когда вы должны использовать @ModelAttribute.Он поддерживает вложенные объекты, как вы хотите.

Если вам нужно несколько @ModelAttribute с, вы можете объединить их в специальный класс (например, если этот класс может содержать поле с именем entry типа AddressBookEntry, чтобы имена параметровбыть таким же).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...