0
我需要設置一個動態頁面標題到preRenderView & preRenderComponent的監聽器在文檔主體內部執行後獲取的頁面。但是我發現那些標題是在這些聽衆被執行之前呈現的。渲染頭在preRenderView&preRenderComponent的內部監聽器方法執行後執行
有什麼辦法可以延遲標題標籤的渲染,直到聽衆執行完畢?
我需要設置一個動態頁面標題到preRenderView & preRenderComponent的監聽器在文檔主體內部執行後獲取的頁面。但是我發現那些標題是在這些聽衆被執行之前呈現的。渲染頭在preRenderView&preRenderComponent的內部監聽器方法執行後執行
有什麼辦法可以延遲標題標籤的渲染,直到聽衆執行完畢?
好的,我嘗試了以下策略作爲解決方法。我只是將f:event type="preRenderComponent"..
從body
內部移動到head
部分&我得到期望的行爲。
<f:metadata>
<f:viewParam name="id" value="#{bean.id}" />
</f:metadata>
<ui:define name="titleOfPage">
<f:event type="preRenderComponent" listener="#{bean.method()}"/>
#{bean.title}
</ui:define>
<ui:define name="bodyOfPage">
..
..
</ui:define>
主模板:
<h:head>
...
<title><ui:insert name="titleOfPage"></ui:insert></title>
</h:head>
<h:body >
<ui:insert name="bodyOfPage">Body of the pages goes here</ui:insert>
</h:body >
首先偵聽方法被調用&然後title
內部head
被渲染。
也許PreRenderView
類型可能已被直接使用,而不需要將f:event
標籤移動到頭,但即使在不需要的ajax請求上也會觸發PreRenderView
。
不尋找一種方式來拖延,只尋找那些可以後'preRenderXXX',地方'jsf.ajax.addOnEvent(功能(數據被用來鉤){ \t \t如果(data.status == =「success」){alert('hello');}});'看看它是否在你的監聽器之後被調用... – Daniel
這是在同步請求還是異步請求? PreRenderView應該可以正常工作,PreRenderComponent只有在掛鉤'UIViewRoot'時才能工作。 – BalusC
@balusC:'h:head'裏面的'