0

我正在使用 Spring 3.1.0.RELEASE 和 Hibernate 4.0.1.Final。我想在控制器中调用一个搜索方法,该控制器将搜索bean(下面的事件bean)作为输入......

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

事件 bean 包含以下字段...

@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,以便填充搜索 bean 的 Event.getEventFeed().getId() 字段?

我意识到我可以使用“eventFeedId=2”之类的参数提交一个 GET 请求并手动填充所有内容,但由于其他页面正在提交填充命令对象的请求,我想继续使用相同的逻辑。

4

1 回答 1

0

这将是

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

event是定义的默认模型属性名称@ModelAttribute,其他绑定规则在5.4.1 设置和获取基本和嵌套属性中描述。

但是请注意,如果您稍后将这些 bean 与 Hibernate 会话相关联,这种方法可能会导致问题。例如,如果您想通过调用将 new 附加Event到现有的,它也会覆盖该属性。因此,在这种情况下,最好避免过度使用数据绑定,而是将原语作为参数传递。EventFeedmerge()title

于 2012-04-11T17:18:46.323 回答