NetBeans IDE 6.0+ 內建可視化 JSF 頁面流編輯器,支援拖拉連線定義導航規則,自動生成 faces-config.xml。本教程從雙頁靜態跳轉入手,進階至下拉選單動態導航、NavigationHandler 程式化導航、大量頁面導航模式。
button1 連接點至 Page2 圖標,連線命名為「Page 2」。faces-config.xml:<navigation-rule>
<from-view-id>/Page1.jsp</from-view-id>
<navigation-case>
<from-outcome>Page 2</from-outcome>
<to-view-id>/Page2.jsp</to-view-id>
</navigation-case>
</navigation-rule>
部署運行(F6),點擊 Go 按鈕即可跳轉。
Page 2 / Page 3。button1 再拉一條線到 Page3,命名「Page 3」。public String button1_action() {
return (String) dropDown1.getValue(); // 返回選中的導航 case 名稱
}
部署測試:選單選 Page 2/3 → 點 Go → 對應跳轉。
dropDown1_processValueChange(ValueChangeEvent event) 注入程式化導航代碼:public void dropDown1_processValueChange(ValueChangeEvent event) {
Application app = getApplication();
NavigationHandler nav = app.getNavigationHandler();
FacesContext ctx = getFacesContext();
nav.handleNavigation(ctx, null, (String) dropDown1.getValue());
}
javax.faces.application.*、javax.faces.context.FacesContext。當頁面超過十幾個,逐個畫線不可維護。改用通配符規則:
<navigation-rule>
<from-view-id>/*</from-view-id>
<navigation-case>
<from-outcome>login</from-outcome>
<to-view-id>/login.jsp</to-view-id>
</navigation-case>
</navigation-rule>
Action 方法返回 "login" 即可從任意頁面跳轉登錄頁。編輯器可能顯示警告,可忽略。
from-outcome → to-view-id。processValueChange + NavigationHandler 程式化控制。