使用NetBeans Visual Web Package是目前功能最强大的免费JSF可视化开发工具(SUN Creator与Visual Web Package其实就是一种产品)。在VW的帮助下,开发JSF就如同使用NetBeans开发Swing一样,所见即所得,真正的实现了JSF开发的初衷。再加上丰富的组件(包括支持AJAX的插件GOOGLE MAP等,需另外下载),开发起JSF来十分得心应手。今天我们来轻松的实现JSF里可加入书签的URL,也就是GET请求。


首先,到www.netbeans.org上下载Visual Web Package( Technology Preview ),并且安装好。(不用截图了吧)



o_newProject2.jpg
然后再创建一个新的工程。
选择右边Web下的Visual Web Application ,起个好名字。
source structure 推荐选择 Java BluePrint (JAVA蓝图标准),或者使用 Jakarta 。
去掉 Set source level to 1.4 前面的钩 ,要不然就使用JDK1.4开发了。
其他的根据自己需要的设定好,点击 Finish 整个项目就创建好了。




o_bluePrint.jpg


在 Project 窗口中可以看到 BluePrint 下的本项目结构。应该一看就明白:
        Themes 目录下有IDE自带的三个主题,可以根据需要要,简单的切换整个项目Web的主题。对于我这样不怎么懂得CSS的人来说是个福音;对于那些美工来说,可以专门的编辑这些主题,供开发人员直接使用,很方便。
        Page Navigation 是可视化的页面导航配置(当然也可以直接写XML配置),可以让你把页面里可以有导航作用的组件(或者整个页面)通过拖拽到其他页面来自动配置页面的导航规则,同时给该组件加上return "toXXPage"的方法。
        清晰的将三种 Managed Bean 分类列举出来,很直观。
        Configuration File 下有熟悉的 faces-config.xml 和 web.xml 。其中 web.xml 可以让你可视化(如同选择、填表一样)配置 Web 的 Filter、Sevlet、Security、XML、General、Pages、Refference信息。以前这些复杂的配置都在这里可以很方便的进行了。




下面我们就开始实现可以加入书签的URL,也就是GET请求

打开一个Page, 将组件托盘里的HyperLink拖拽到页面中间,作为导航入口。请记住,实现GET请求的导航必须是链接类型,而不能是按钮等动作类型的。o_components.jpg

在属性框里更改其Text,让这个链接显示成为你想要的文字。或者在本链接上点又键,选择Data Binding,将其绑定到一个属性上(以后详细介绍)。

然后,在本链接属性框里的URL后写上 faces/page2.jsp?name=XXX 
注意:一定要以faces/开头 。导航机制自动的将你的项目 http://localhost/yourProject/ 映射到 faces/ 下,然后faces/ 又将映射到 web/ 下。所以使用NetBean Visual Web开发的JSF部署后,如果要定位到某个页面,其名字不是 xxxPage.faces,而直接是 xxxPage.jsp ! 并且,http://localhost/yourProject/  将自动映射到本项目下默认的其实页面(设置方法是右键点要设为默认起始的页面,选设置为起始页面即可)。在上面的URL也可以输入绑定表达式和运算表达式,其中page2.jsp代表了就是你要导航到的页面,"?"后面就是“参数名字=值”的形式,并且多个的参数和值对之间用&链接,下面你将看到简单的根据这些参数名字获取到值的方法。

新建一个叫page2的页面(方法很多,不用介绍了吧),从组件托盘中选择 Static Text 拖入到页面中,在属性面版中更改 ID 为 output 以便我们以后方便的使用。点击页面编辑器上 Java 按钮,进入到本页面的 Request Bean , 这个 Bean 是在生成本页面时候自动生成的,与页面同名并且是 Request 范围的,主要就是负责页面的表示和逻辑。Visual Web会自动的为页面上每个组件生成相应的JAVA代码,也就是说,你可以在这个页面内动态的控制页面内每个组件的属性。

下面我们要在 public void prerender() {   }方法中写上代码。   prerender() 方法是负责在页面生成前做好一切准备的工作的,如同其名字一样,预渲染。所以我们要在这个时候把刚才通过GET方法传到本页面的参数提取出来。方法很简单:

 public void prerender() {
        String name 
= (String) getExternalContext().getRequestParameterMap().get("name");
        
        
if( name != null )
        
this.output.setText(name);

    }

通过getRequestParameterMap()就能获得所有的 参数名-值 的MAP,即可从中轻松的取得想要的参数值了。

最后我们将 Static Text 的值设置为name参数的值,就大致的展示了我们能获得一个GET请求了!这样就可以让用户将此页面保存到书签(收藏夹),并且动态的获取信息,而不再是仅仅依靠内部导航机制了。

结果我就不在这里展示了,自己动手体验下吧!