簡體   English   中英

何時使用preRenderView與viewAction?

[英]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>

在實踐中,它們可用於實現相同的效果,但viewActionviewAction新增功能)具有以下增強功能:

  1. onPostbackviewAction附帶此屬性,允許您指定是否要在回發到同一視圖時執行操作(即,在頁面刷新或按鈕提交等)。 它默認為false ,因此如果您不需要,甚至不必指定它。 要獲得與preRenderView相同的效果,您需要

      <f:metadata> <f:event type="preRenderView" rendered="#{facesContext.postBack}" listener="#{myBean.initialize}"/> </f:metadata> 
  2. phase :此屬性允許您指定在特定JSF階段執行操作。 它默認為INVOKE_APPLICATION ,但所有其他JSF階段ID在此處都有效。

  3. if :此屬性允許您提供計算結果為布爾值的值表達式。 視圖操作僅對此表達式的結果執行。

  4. immediate :此屬性現在授予在APPLY_REQUEST_VALUES階段執行viewAction的能力(與默認的INVOKE_APPLICATION階段相比),使其行為類似於常規UIComponent

總的來說, viewAction是一種執行視圖命令的更viewAction的設計方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM