У меня есть страница с именем trip.xhtml
, где я беру параметры из URL, используя следующий код:
<f:metadata>
<f:viewParam name="tripid" value="#{tripBean.tripId}" />
<f:viewParam name="seats" value="#{tripBean.seats}" />
<f:event type="preRenderView" listener="#{tripBean.processParams}" />
</f:metadata>
TripBean
выглядит следующим образом (упрощенно):
@ManagedBean
@RequestScoped
public class TripBean implements Serializable {
private static final long serialVersionUID = -4885781058258859229L;
private Long tripId;
private int seats;
// Getters and setters for tripId and seats
В нижней части страницы trip.xhtml
у меня есть h:link
:
<h:link outcome="/customer/booking.xhtml" value="Book this trip"
includeViewParams="true" />
Я ожидаю, что URL, который я получу, когда я нажму на эту ссылку, будет похож на "/customer/booking.jsf?tripid=2&seats=1"
,Это только тот случай, когда я помещаю следующий код на мою booking.xhtml
страницу:
<f:metadata>
<f:viewParam name="tripid" value="#{tripBean.tripId}" />
<f:viewParam name="seats" value="#{tripBean.seats}" />
</f:metadata>
Хотя на самом деле я хочу использовать другой компонент.Изменяя код на:
<f:metadata>
<f:viewParam name="tripid" value="#{bookingBean.tripId}" />
<f:viewParam name="seats" value="#{bookingBean.seats}" />
</f:metadata>
BookingBean
также имеет 2 свойства tripId
и seats
, которые идентичны TripBean
, но когда я пытаюсь щелкнуть ссылку сейчас, я толькосм. параметр seat, который установлен в 0. ("/customer/booking.jsf?seats=0"
)
Кто-нибудь имеет какие-либо идеи, почему я не могу передать параметры просмотра на другую страницу, когда я пытаюсь использовать другой компонент?хранить их в?И если невозможно сохранить его в другом компоненте, как я могу поместить эти значения из TripBean
в BookingBean
?
Быстрый обходной путь, который я использовал: Не используя includeViewParams="true"
, но добавляя параметры вссылка вручную (см. ниже) «исправляет» проблему.Хотя мне все еще интересно, почему это не будет работать с includeViewParams
!
<h:link outcome="/customer/booking.xhtml" value="#{msg['page.trip.booking']}">
<f:param name="tripid" value="#{tripBean.tripId}" />
<f:param name="seats" value="#{tripBean.seats}" />
</h:link>