我在我的index.xhtml JSF首頁有一個下拉菜單。相關的代碼/的commandButton看起來是這樣的:java最有效的JSF 1.2導航
<h:selectOneMenu id="nodes" value="#{MyBacking.chosenNode}">
<f:selectItems value="#{MyBacking.nodes}" />
</h:selectOneMenu>
<a4j:commandButton value="Retrieve" styleClass="ctrlBtn"
id="retrieveBtn" style="margin-bottom: 2px;"
onclick="#{rich:component('nodeLoadWait')}.show()" # modal
action="#{MyBacking.redirect}"
image="/img/btnRetrieve26.png" />
action
設置爲 '你好' 以前,在我faces-context.xml
:
<navigation-rule>
<from-view-id>/index.xhtml</from-view-id>
<navigation-case>
<from-outcome>hello</from-outcome>
<to-view-id>/nodeMgmt.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
當action
設置爲 '你好',點擊retrieve
按鈕工作確定在那個面孔將處理導航和MyBacking.setChosenNode
方法將分配所有必要的數據,以便nodeMgmt.xhtml的內容將顯示完全填充。
但是,如果用戶點擊retrieve
超時引起的初始活動,即使bean檢測到超時,網頁也會掛起,我想將用戶重定向到「超時」頁面。
爲了處理返回超時消息的支持bean(當應用程序'內部'時已經存在錯誤檢測),我認爲不是使用faces-context.xml
文件,而是在內部處理它。
我發現了FacesContext.getCurrentInstance()。getExternalContext()。重定向,但JSF 1.2 javadoc沒有這個功能。也許是因爲它沒有特色?它重定向雖然是令人困惑的。爲什麼沒有這個方法的文檔?
儘管如此,它會將我重定向到頁面,但在初始請求期間不考慮bean實例化的數據而進行渲染。該bean當前處於請求範圍內。豆中的相關代碼是
try {
FacesContext.getCurrentInstance().getExternalContext().redirect("nodeMgmt.jsf");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
是使用後端java調用做這種重定向的最好方法嗎? 如果不是,最好使用faces-context.xml
?如果是這樣,怎麼樣? 雖然我們在這裏 - 任何人都可以指導我一個很好的閱讀資源FacesContext.getCurrentInstance()。getExternalContext()用法,它有關於如何使用數據進行簡單導航的體面示例因爲我無法定位一個。
乾杯
謝謝。在這種情況下真相會受到傷害。 – volvox 2011-05-17 15:14:48
不客氣。 – BalusC 2011-05-17 15:15:55