我在用来编辑“事件”的页面中有这个
<f:metadata>
<f:viewParam id="event_id" name="eventId" value="#{eventController.eventId}"/>
<f:event type="preRenderView" listener="#{eventController.loadEvent}" />
</f:metadata>
...以及我的“ViewScoped”bean 中的相应 loadEvent 方法。
在用户可以选择要编辑的事件的“列表事件”页面中,我建立了这样的链接
<h:link value="Full details" outcome="/calendar/viewEvent" includeViewParams="true">
<f:param name="eventId" value="#{calendarController.event.eventId}" />
</h:link>
在单击链接之前,我不希望调用 loadEvent 方法,但是当我访问“列表事件”页面时,它会被调用一次,并且仅调用一次。
当然,这以某种方式归结为 JSF 生命周期……但是为什么呢?