NetBeans Web开发中设置页面导航

时间:2021-01-13 17:13:10

本教程说明了如何在NetBeans IDE 6.0中设置页面导航。首先,您将在IDE中创建一个Web应用程序,该应用程序在两个页面之间使用简单的导航。使用第一页上的按钮可以转至第二页。然后,对该应用程序进行修改,以使其在运行时基于Drop Down List组件的返回值来确定显示哪一页。您还将了解到另一种更高级的动态页面导航方法,通过该方法,可以在从下拉列表中进行选择后立即进行页面导航。

预计时间:20分钟

目录

l          创建第一页

l          在两个页面之间导航

l          向第二页添加组件

l          添加用于实现动态导航的下拉列表

l          添加第三页

l          实现动态页面导航

l          部署应用程序

l          实现高级动态页面导航

 

本教程将使用以下技术和资源:

JavaServer Faces组件/
Java EE
平台

1.2/Java EE 5*
1.1/J2EE 1.4

Travel数据库

不是必需的

BluePrints AJAX组件库

不是必需的

* 为了使用NetBeans IDE 6.0Java EE 5功能,使用完全符合Java EE 5标准的应用服务器,比如Sun Java Application Server 9/GlassFish

本教程针对GlassFish v2 Application Server。如果您使用的是其他服务器,请参考发行说明常见问题解答以了解已知问题和解决方法。有关支持的服务器和 Java EE 平台的详细信息,请参见发行说明

创建第一页

在本教程的第一部分中,您将创建一个包含两个页面的Web应用程序,并使用按钮在两个页面之间进行导航。随后,将添加一个Drop Down List组件,以使用户能够在运行时选择目标页。

首先,创建一个包含Static Text组件和Button组件的页面。

1.      创建一个新的Web应用程序项目,并将其命名为NavigationExample。使用GlassFish V2 Application ServerVisual Web JavaServer Faces框架。

        出现新项目,并且其初始页会显示在Visual Designer中。

2.        PaletteBasic类别中,将一个Static Text组件拖放到页面上。通过直接在该组件的默认文本上键入内容,将其text属性更改为Page One

3.        将一个Button组件从Palette拖放到页面上,并将其text属性更改为Go

¡           请注意:在IE7中有一个已知问题会影响到JSF1.2 Button组件的宽度。解决方法是将组件按钮放到一个布局组件中(Grid PanelGroup PanelLayout Panel)。

在两个页面之间导航

接下来,在应用程序中添加另一个页面,然后通过创建链接或页面连线指定第一页和第二页之间的导航。

1.      在可视编辑器的编辑区域空白处右键单击,然后从弹出菜单中选择页面导航

Page Flow Editor将显示“Page1.jsp”图标 ,它表示您在上一部分中创建的页面。注意,   该图标具有4个特性:

a.        其标记指示图标显示的页面类型。绿色箭头只是页面时项目的主页面。

b.        图标表示的文件名称用于区分产品中的页面。

c.        +”符号用于展开图标,以显示页面上的组件。

d.        连线端点用于绘制页面之间的导航线。

2.        按如下方法创建一个新JSP页面:

a.        在编辑区域中右键单击,然后选择New File

b.      New File对话框中,在Categories下面选择Java Server Faces,在File Types下面选择Visual Web JSF Page,然后单击Next

c.      接受默认名称 Page2,然后单击Finish

     将在Page Flow Editor中显示Page2.jsp图标,并在Projects窗口的NavigationExample >Web Pages节点下面添加Page2.jsp节点。

3.        如果创建Page2.jsp之后未在Page Flow Editor中显示,请选择faces-config.xml以显示Editor

4.        单击Page1.jsp图标上的“+”号以将其放大,以便可以看到button1图标。

5.        单击button1图标,并拖动一条直线到Page2.jsp图标。出现一条由第一页指向第二页的连线。默认情况下,新创建的连线名称为case1

6.      双击该连线的名称,然后将其由case1更改为Page2

7.      单击编辑工具栏中的XML以查看在最后两步中生成的代码。粗体显示的导航规则添加到托管bean代码下面,以省略号(...)表示。

代码样例 1:生成的代码

<?xml version="1.0" encoding="UTF-8"?>

<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" 

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

   http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">

    <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>

</faces-config>


faces-config标记内添加的代码用于指定此Web应用程序的单个导航规则。每个导航规则都指定一个初始页以及一个或多个目标页。

向第二页添加组件

现在,将向第二页添加一个标签,以便在视觉上将该页与第一页区分,然后运行应用程序。

1.        单击编辑工具栏中的Page Flow

2.        双击Page2.jsp图标。

    将在Visual Designer中打开此页面。

3.        将一个Static Text组件放到页面上,并将其text属性更改为Page Two


4.        F6键以部署应用程序。

5.        在部署Web应用程序后,将在浏览器中打开第一页


6.      单击Go按钮,将从第一页导航至第二页。

在这一部分中,您创建了两个页面,并建立了从一个页面到另一个页面的简单导航。在下面的部分中,您将基于从Drop Down List组件中选择的内容来建立导航。

添加用于实现动态导航的下拉列表

现在,您将了解有关动态页面导航的信息。您将在应用程序的第一页中添加一个Drop Down List组件。用户可以在运行时通过Drop Down List来选择目标页。随后,您将在应用程序中添加第三个页面,以使Drop Down List包含两个目标选项。

1.        Visual Designer中打开Page1.jsp

2.        将一个Drop Down List组件放在Static Text组件的下面。

3.        右键单击该Drop Down List组件,然后选择Configure Default Options

4.        在标记为Options Customizer - dropDown1的对话框中,将每个默认项的值替换为下图所示的值。单击每个表单元格以编辑值,并在编辑每个字段后按Enter键以接受更改。

5.        单击OK以保存所有更改。

添加第三页

您将创建第三个页面,从第一页可以导航至该页面。

1.          Projects窗口中,右键单击NavigationExample > Web Pages节点,然后选择New > Visual Web JSF Page。在New Visual Web JSF Page向导中,单击FinishIDE将创建并显示Page3.jsp

2.          将一个Static Text组件从Palette窗口拖放到页面上。将该组件的text属性设置为Page Three

实现动态页面导航

在本部分,您将启用动态页面导航。通过动态页面导航,应用程序可以在运行时确定用户在第一页上单击 "Go" 按钮时将显示哪一页。

1.          打开Page Flow Editor

2.          单击Page1.jsp图标以显示其内容,然后从按钮的连接器端口拖动一条连线至Page3.jsp图标。

3.          将该连线的名称由case1更改为Page 3

4.          双击Page1.jsp图标,然后单击编辑工具栏中的Design以显示第一页的布局。

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

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

代码样例2Return语句

public String button1_action() {

     return (String) dropDown1.getValue();

}

部署应用程序

您将对页面之间的导航进行测试。

1.          F6键以部署应用程序。

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

3.          单击浏览器的Back按钮可以从第二页返回至第一页。

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

实现高级动态页面导航

在上一部分中,动态页面导航是以直接的方式进行处理的。用户只需在下拉列表中选择要导航到的页面,然后单击Go按钮即可。如果希望在下拉列表值发生更改后立即更改页面,请使用以下步骤修改在前面部分创建的项目。

1.          单击Page1标签,然后单击编辑工具栏中的Design以切换至Visual Designer

2.          右键单击Go按钮,然后选择Delete

3.          双击Drop Down List组件以在Java编辑器中查看Page1 类代码。

4.          将下面以粗体显示的代码添加到dropDown1_processValueChange()处理程序方法中。前两行代码用于检索应用程序的对象引用。在应用程序对象中,您可以获得Navigation Handler的实例。为此对象调用handleNavigation()方法,可以指定从Drop Down List组件检索的值(该值指定要导航到的页面)。

代码样例3Navigation Handler方法

public void dropDown1_processValueChange(ValueChangeEvent event) {

    Application application = getApplication();

    NavigationHandler navigator = application.getNavigationHandler();

    FacesContext facesContext = getFacesContext();

    navigator.handleNavigation(facesContext,

        null,(String) dropDown1.getValue());

 

}  


请注意,出现的红色曲线指示找不到ApplicationNavigationHandlerFacesContext类。您将在下一步中导入这些类。

5.        Source Editor中的任意位置右键单击,然后选择Fix Imports,以便将下列import语句自动添加到源文件的顶部位置附近:

代码样例4Navigation Handler方法的Import语句

import javax.faces.application.Application;

import javax.faces.application.NavigationHandler;

import javax.faces.context.FacesContext;

6.          单击编辑工具栏中的Design以便在Visual Designer中查看Page1

7.          右键单击Drop Down List组件,然后选择Auto-Submit on Change,以便指示在选择后自动提交选定的项。

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

9.          选择下拉列表中的Page 2项,以便从第一页导航至第二页。单击Back按钮返回至第一页。

10.       选择下拉列表中的Page 3项,以便从第一页导航至第三页。

执行更多操作:使用大量页面

本教程介绍的方案适用于页数相对较少的情况,但很多实际的应用程序需要在数十个页面中进行导航。要建立此类导航,请尝试下列步骤:

1.          Page Navigation编辑器中,单击编辑工具栏中的XML按钮。

2.        在下面的XML中添加类似于第一个条目的导航规则。将<from-view-id>设置为/*,将<from-outcome>设置为某个标识字符串,然后将<to-view-id>设置为目标页面。

代码样例5:包含大量页面的应用程序的页面导航XML

<?xml version="1.0" encoding="UTF-8"?>

<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">

    <navigation-rule>

        <from-view-id>/*</from-view-id>

        <navigation-case>

            <from-outcome>login</from-outcome>

            <to-view-id>/Page3.jsp</to-view-id>

        </navigation-case>

    </navigation-rule>

    <navigation-rule>

        <from-view-id>/Page1.jsp</from-view-id>

        <navigation-case>

            <from-outcome>case1</from-outcome>

            <to-view-id>/Page2.jsp</to-view-id>

        </navigation-case>

    </navigation-rule>

</faces-config>

 

当返回至Page Navigation编辑器时,该编辑器将显示错误。不过,您可以忽略这些错误。

3.          对于要发送到页面的操作组件中的所有操作处理方法,您需要将这些方法返回from-outcome(本例中为 "login"),如下所示:

public String button1_action() {

        return "login";

    }

小结

用于实现页面导航的典型工作流如下所示:

1.          创建页面。

2.          将支持导航的组件(如按钮和下拉列表)放到页面上。

3.          使用Page Flow Editor,在组件和页面之间绘制连线。

4.          使用dropDown1_processValueChange()处理程序方法来实现更高级的导航。

 

另请参见:

l          NetBeans Visual Web Pack 入门指南

l          使用数据绑定组件访问数据库

l          使用页面片段

>> 更多NetBeans Web应用程序文档