» 搜索提示
 
使用动态页面导航
2006 年 1 月 [修订号:V2-3]  
在本教程中,您将使用 Sun Java Studio Creator 集成开发环境 (Integrated Development Environment, IDE) 创建一个使用动态页面导航的应用程序。该应用程序在运行时基于下拉列表组件返回的值来确定显示哪一页。通过下拉列表,用户可以选择目标页,应用程序将导航到两个可用目标页之一。您还将了解到另一种更高级的动态页面导航方法,通过该方法,在从下拉列表中进行选择后可以立即发生页面导航。
 
目录
 
创建第一页
实现页面导航
设计第二页
添加第三页
部署应用程序
实现高级动态页面导航
[spacer] 此页上的内容适用于 Sun Java Studio Creator 2
 
在学习本教程之前,您需要知道如何使用 IDE 创建项目、设计和部署 Web 应用程序以及创建简单的页面导航。如果需要了解这些概念,请参见 Java Studio Creator 入门指南使用简单页面导航
 

创建第一页

 
首先,创建一个新项目及其第一页。
  1. 创建一个新的 Web 应用程序项目,并将其命名为 DynamicNavigation

    将会出现新项目,并且其初始页 (Page1) 会显示在可视设计器中。下图显示了将在以下步骤中创建的页。

    图 1:第一页的布局
    图 1:第一页的布局
     
  2. 从组件面板的“基本”类别中,将一个“静态文本”组件拖放到页面上。将该组件的 text 属性值设置为 Home

  3. 将“下拉列表”组件放在“静态文本”组件的下面。

  4. 在“概要”窗口中,选择 dropDown1DefaultOptions 非可视组件,如下图所示。

    图 2:dropDown1DefaultOptions 节点
    图 2:dropDown1DefaultOptions 节点
     
  5. 在 dropDown1DefaultOptions 的“属性”窗口中,单击 options 属性中的省略号 (...) 按钮。

  6. 在 "dropDown1DefaultOptions" 对话框中,将每个缺省项的值替换为下图所示的值。单击每个表单元格以编辑值。在编辑每个字段后按 Enter 键以接受更改。

    图 3:“dropDown1DefaultOptions - 选项”对话框
    图 3:"dropDown1DefaultOptions" 对话框
     
  7. 单击“确定”以接受更改。

  8. 在“下拉列表”组件的右侧放置一个“按钮”组件。将按钮的 text 属性设置为 Go
 

实现页面导航

 
通过在页面之间创建链接或页面连线来添加页面导航。通过动态页面导航,应用程序可以在运行时确定用户在第一页上单击 "Go" 按钮时将显示哪一页。
  1. 在可视设计器的编辑区域中单击鼠标右键,然后选择“页面导航”。

    导航编辑器将显示 Page1.jsp 图标,它表示您在上一部分创建的页。

  2. 在导航编辑器的编辑区域中单击鼠标右键,然后选择“新建页面”。

  3. 在“选择页面名称”对话框中单击“确定”以接受缺省名称(即 Page2)。

    Page2.jsp 图标出现在 Page1.jsp 图标的右侧。同时 Page2.jsp 节点出现在“项目”窗口的 "DynamicNavigation" >“Web 页”节点下面。

  4. 单击 Page1.jsp 图标将其放大,然后从 button1 图标拖动一条连线到 Page2.jsp 图标。

    下图显示了一条由初始页 Page1.jsp 指向目标页 Page2.jsp 的连线。

    图 4:连接页
    图 4:连接页
     
  5. 将连线的名称从 case1 更改为 Emerald City。按 Enter 键。

  6. 单击 Page2.jsp 图标,然后拖动一条连线到 Page1.jsp 图标。

    将出现一条由第二页指向第一页的连线。在本例中,连线表示第二页中的按钮操作会让用户返回到第一页中。

  7. 将连线的名称从 case1 更改为 Home。按 Enter 键。
 

设计第二页

 
使用可视设计器,将组件添加到由第一页导航到的第二页中。
  1. 在导航编辑器中,双击 Page2.jsp 图标以便在可视设计器中显示第二页。

    下图显示了将在以下步骤中创建的页。

    图 5:第二页的布局
    图 5:第二页的布局
     
  2. 将一个“静态文本”组件从组件面板拖放到页面上。将组件的 text 属性设置为 Emerald City

  3. 将一个“按钮”组件放置在页面上,使其位于“静态文本”组件的下方。将“按钮”组件的 text 属性设置为 Home

  4. 右键单击“项目”窗口中的“会话 Bean”节点,然后选择“添加”>“属性”。

  5. 在“新建属性模式”对话框的“名称”文本字段中,输入 from,然后单击“确定”。

  6. 在可视设计器中,双击 "Home" 按钮以查看 Page2.jsp 的 button1_action() 处理程序方法。

  7. 将缺省的 return 语句替换为下面以粗体显示的代码。

    代码样例 1:按钮的操作处理程序方法
    public String button1_action() {
            return getSessionBean1().getFrom();
    }
     
  8. 单击导航编辑器顶部的 "Page1" 标签,以便在可视设计器中查看 Page1。

    双击 "Go" 按钮组件,以便在 Java 编辑器中显示其 action 事件处理程序方法的源代码。

  9. 将方法中的 return 语句替换为下面以粗体显示的代码:

    代码样例 2:Return 语句
    public String button1_action() {
         getSessionBean1().setFrom("Home");
         return (String) dropDown1.getValue();
    }
     
 

添加第三页

 
使用可视设计器,创建第一页可以导航到的第三页。
  1. 单击“页面导航”标签以查看导航图。

  2. 在导航编辑器的编辑区域中单击鼠标右键,然后选择“新建页面”。

  3. 在“选择页面名称”对话框中单击“确定”以接受缺省名称(即 Page3)。

  4. 单击 Page1.jsp 图标,然后拖动一条连线到 Page3.jsp 图标。

  5. 将连线的名称从 case1 更改为 Diamond City。按 Enter 键。

  6. 单击 Page3.jsp 图标,然后拖动一条连线到 Page1.jsp 图标。

  7. 将连线的名称从 case1 更改为 Home。按 Enter 键。

  8. 双击 Page3.jsp 图标以便在可视设计器中显示第三页。

    下图显示了将在以下步骤中创建的页。

    图 6:第三页的布局
    图 6:第三页的布局
     
  9. 将一个“静态文本”组件从“组件面板”窗口拖放到页面上。将组件的 text 属性设置为 Diamond City

  10. 将一个“按钮”组件放置在页面上,使其位于“静态文本”组件的下方。将“按钮”组件的 text 属性设置为 Home

  11. 双击 "Home" 按钮以查看 button1_action() 处理程序方法。

  12. 将缺省的 return 语句替换为下面以粗体显示的代码:

    代码样例 3:按钮的操作处理程序方法
    public String button1_action() {
            return getSessionBean1().getFrom();
    }
    
     
 

部署应用程序

 
最后,对页面之间的导航进行测试。
  1. 通过单击主工具栏中的绿色箭头来部署应用程序。

  2. 在第一页上,从下拉列表中选择 "Emerald City",然后单击 "Go" 转至第二页。

  3. 单击 "Home" 按钮,从 Emerald City 页返回到第一页。

  4. 现在,从下拉列表中选择 "Diamond City",然后单击 "Go" 转至第三页。

  5. 单击 "Home" 按钮,从 Diamond City 页返回到 Home 页。
 

实现高级动态页面导航

 
在上一部分中,动态页面导航是以直接的方式进行处理的。用户在下拉列表中选择要导航到的页面,然后单击 "Go" 按钮。如果希望在下拉列表值发生更改后立即更改页面,请使用以下步骤修改在前面部分创建的项目。
  1. 单击 "Page1" 标签,然后单击编辑工具栏中的“设计”切换到可视设计器中。

  2. 右键单击 "Go" 按钮,然后选择“删除”。

  3. 双击“下拉列表”组件以便在 Java 编辑器中查看 Page1 类代码。

  4. 将下列以粗体显示的代码添加到 dropDown1_processValueChange() 处理程序方法中:

    代码样例 4:导航处理程序方法
    public void dropDown1_processValueChange(ValueChangeEvent event) {
        Application application = getApplication();
        NavigationHandler navigator = application.getNavigationHandler();
        getSessionBean1().setFrom("Home");
        FacesContext facesContext = getFacesContext();
        navigator.handleNavigation(facesContext, null,(String) dropDown1.getValue());
    }
      
     
    请注意,出现红色曲线表示找不到 ApplicationNavigationHandlerFacesContext 类。您将在下一步导入这些类。

    上述前两行代码用于检索应用程序的对象引用。在应用程序对象中,您可以获得导航处理程序的实例。为此对象调用 handleNavigation() 方法,来指定从下拉列表组件检索的值(该值指定要导航到的页)。

  5. 在源代码编辑器中的任意位置单击鼠标右键,然后选择“修复导入”,会将以下 import 语句自动添加到源文件顶部位置的附近:

    代码样例 5:导航处理程序方法的 Import 语句
    import javax.faces.application.Application;
    import javax.faces.application.NavigationHandler;
    import javax.faces.context.FacesContext;
    
     
  6. 单击编辑工具栏中的“设计”以便在可视设计器中查看 Page1。

  7. 右键单击“下拉列表”组件,然后选择“更改时自动提交”,表示在选择后自动提交选定的项。

  8. 运行并部署应用程序。

  9. 选择下拉列表中的 "Emerald City" 项,以便从第一页导航到第二页。单击 "Home" 返回到第一页。

  10. 选择下拉列表中的 "Diamond City" 项,以便从第一页导航到第三页。单击 "Home" 返回到第一页。
 
另请参见
 
更多的开发者资源
 
有关为开发者提供的更多教程、文章、提示和专家建议,请访问 Sun Developer Network (SDN) 上的 Java Studio Creator 开发者资源
 

 
此页的最新修改时间:2006 年 4 月 5 日