2012-04-11 1 views
0

Я использую Spring 3.1.0.RELEASE с Hibernate 4.0.1.Final. Я хочу, чтобы вызвать метод поиска в контроллере, который принимает в качестве входных данных поиска боб (боба Event ниже) ...Spring: Как я могу построить этот объект команды через HTTP-запрос GET?

@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» и заполнить все вручную, но поскольку другие страницы отправляют запросы, которые заполняют объект команды, я хотел бы продолжать использовать ту же логику ,

+0

«... заполнять все вручную, но поскольку другие страницы отправляют запросы, которые заполняют объект команды», это ваш вопрос: «Как мне загрузить этот EventFeed из базы данных?» ? - Если у вас есть другой вопрос, можете ли вы, пожалуйста, сформулировать вопрос более точно: потому что ответ на ваш официальный вопрос: '? event.eventFeed.id = 1 & event.eventFeed.title = hallo' - но я не думаю, что это что вы хотите узнать. – Ralph

+0

Да, «? Event.eventFeed.id = 1 & event.eventFeed.title = hallo» - это то, что я хочу знать, за исключением случаев, указанных ниже, я пробовал это, и компонент Event.getEventFeed() не заполняется. – Dave

ответ

0

Было бы

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

event является модель по умолчанию имя атрибута, как это определено в @ModelAttribute, другие обязательные правила описаны в 5.4.1 Setting and getting basic and nested properties.

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

+0

Я попробовал строку запроса, которую вы предложили, но поле EventFeed компонента события по-прежнему равно нулю. – Dave