我使用f:metadata元素中的預渲染視圖事件調用另一個頁面。從行爲方法調用頁面時,不會調用JSF 2 Prerenderview監聽器結果
如果我使用<h:link>
導航到頁面,它將工作並調用偵聽器方法。
但是,如果我使用來自屬於調用頁面的託管bean的操作方法的結果導航到該頁面,則prerenderview中指定的偵聽器不會被調用(就像它通過鏈接調用一樣)。它確實導航到第二頁,沒有監聽者的電話。
我真的更喜歡從動作方法調用,因爲我使用它來做一些工作,並在會話映射中放置一個變量,以便被調用的頁面使用。我不確定如何使用鏈接實現相同的功能。該對象可能相當大... kb不是Mb,但仍然不是我想要放在請求中的東西。
我試着讓調用頁面請求的託管bean作用域並查看作用域。
如果從託管bean結果調用prerenderview是不可能觸發的?正如我所說,我從鏈接中獲得了它的工作。
<body>
<ui:define name="metadata">
<f:view>
<f:metadata>
<f:event type="preRenderView" listener="#{businessBean.init}" />
</f:metadata>
</f:view>
</ui:define>
<ui:composition template="#{navigationprops.soulard_2col_uprefs_template}">
您的具體問題只是由使用Facelets的錯誤方式引起的。 – BalusC
@BalusC請解釋一下。 – BillR