Spring: Как мне создать этот объект команды с помощью GET HTTP-запроса?

Я использую Spring 3.1.0.RELEASE с Hibernate 4.0.1.Final. Я хочу вызвать метод поиска в контроллере, который принимает в качестве входных данных компонент поиска (компонент событий ниже) ...

@RequestMapping(value = "/search_results.jsp")
public ModelAndView processSearch(final HttpServletRequest request, final Event searchBean, final BindingResult result) {
    ...
}

Компонент события содержит следующее поле...

@Entity
@Table(name = "EVENTS")
public class Event implements Comparable {

    ...
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="EVENT_FEED_ID")
    private EventFeed eventFeed;
    ...
}

в котором объект EventFeed содержит следующие поля...

@Entity
@Table(name = "EVENT_FEEDS")
public class EventFeed {

    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;

    @NotEmpty
    @Column(name = "TITLE")
    private String title;

    ... 
}

Как создать URL-адрес таким образом, чтобы поле Event.getEventFeed(). GetId() поискового компонента было заполнено?

Я понимаю, что мог бы отправить запрос GET с параметром, таким как "eventFeedId=2", и заполнить все вручную, но, поскольку другие страницы отправляют запросы, которые заполняют объект команды, я хотел бы продолжать использовать ту же логику.

1 ответ

Это было бы

/search_results.jsp?event.eventFeed.id=...&event.eventFeed.title=...

event имя атрибута модели по умолчанию, как определено в @ModelAttribute другие правила связывания описаны в 5.4.1. Установка и получение основных и вложенных свойств.

Однако обратите внимание, что этот подход может вызвать проблемы, если вы позже свяжете эти компоненты с сеансом Hibernate. Например, если вы хотите прикрепить новый Event к существующему EventFeed позвонив merge() это также переопределило бы title имущество. Таким образом, в таком случае было бы лучше избежать чрезмерного использования привязки данных и вместо этого передавать примитивы в качестве параметров.

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