[英]When to use f:viewAction / preRenderView versus PostConstruct?
[英]When to use preRenderView versus viewAction?
什么時候應該使用preRenderView事件來初始化頁面的數據而不是使用viewAction? 它們在使用上是否相同,是否具有相同的效果?
preRenderView事件
<f:metadata>
<f:event type="preRenderView" listener="#{myBean.initialize}"/>
</f:metadata>
要么
的viewAction
<f:metadata>
<f:viewAction action="#{myBean.initialize}"/>
</f:metadata>
在實踐中,它們可用於實現相同的效果,但viewAction
( viewAction
新增功能)具有以下增強功能:
onPostback
: viewAction
附帶此屬性,允許您指定是否要在回發到同一視圖時執行操作(即,在頁面刷新或按鈕提交等)。 它默認為false
,因此如果您不需要,甚至不必指定它。 要獲得與preRenderView
相同的效果,您需要
<f:metadata> <f:event type="preRenderView" rendered="#{facesContext.postBack}" listener="#{myBean.initialize}"/> </f:metadata>
phase
:此屬性允許您指定在特定JSF階段執行操作。 它默認為INVOKE_APPLICATION
,但所有其他JSF階段ID在此處都有效。
if
:此屬性允許您提供計算結果為布爾值的值表達式。 視圖操作僅對此表達式的結果執行。
immediate
:此屬性現在授予在APPLY_REQUEST_VALUES
階段執行viewAction
的能力(與默認的INVOKE_APPLICATION
階段相比),使其行為類似於常規UIComponent
總的來說, viewAction
是一種執行視圖命令的更viewAction
的設計方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.