﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Chords-随笔分类-NetBeans</title><link>http://www.blogjava.net/chords/category/18148.html</link><description>Endeering Chords Make Melody</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:57:46 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:57:46 GMT</pubDate><ttl>60</ttl><item><title>体验NetBeans Visual Web Package （一）……轻松实现JSF的GET请求</title><link>http://www.blogjava.net/chords/archive/2006/12/11/87060.html</link><dc:creator>Coody Sk8er</dc:creator><author>Coody Sk8er</author><pubDate>Mon, 11 Dec 2006 14:01:00 GMT</pubDate><guid>http://www.blogjava.net/chords/archive/2006/12/11/87060.html</guid><wfw:comment>http://www.blogjava.net/chords/comments/87060.html</wfw:comment><comments>http://www.blogjava.net/chords/archive/2006/12/11/87060.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/chords/comments/commentRss/87060.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chords/services/trackbacks/87060.html</trackback:ping><description><![CDATA[使用NetBeans Visual Web Package是目前功能最强大的免费JSF可视化开发工具（SUN Creator与Visual Web Package其实就是一种产品）。在VW的帮助下，开发JSF就如同使用NetBeans开发Swing一样，所见即所得，真正的实现了JSF开发的初衷。再加上丰富的组件（包括支持AJAX的插件GOOGLE MAP等，需另外下载），开发起JSF来十分得心应手。今天我们来轻松的实现JSF里可加入书签的URL，也就是GET请求。<br /><br /><br />首先，到<a href="http://www.netbeans.org/">www.netbeans.org</a>上下载Visual Web Package( Technology Preview )，并且安装好。(不用截图了吧)<br /><br /><br /><br /><img height="495" alt="o_newProject2.jpg" hspace="0" src="http://www.blogjava.net/images/blogjava_net/chords/18284/o_newProject2.jpg" width="525" align="center" border="0" /><br />然后再创建一个新的工程。<br />选择右边Web下的Visual Web Application ，起个好名字。<br />source structure 推荐选择 Java BluePrint （JAVA蓝图标准），或者使用 Jakarta 。<br />去掉 Set source level to 1.4 前面的钩 ，要不然就使用JDK1.4开发了。<br />其他的根据自己需要的设定好，点击 Finish 整个项目就创建好了。<br /><br /><br /><br /><br /><p align="left"><img height="294" alt="o_bluePrint.jpg" hspace="0" src="http://www.blogjava.net/images/blogjava_net/chords/18284/o_bluePrint.jpg" width="214" align="left" border="0" /></p><br />在 Project 窗口中可以看到 BluePrint 下的本项目结构。应该一看就明白：<br />        Themes 目录下有IDE自带的三个主题，可以根据需要要，简单的切换整个项目Web的主题。对于我这样不怎么懂得CSS的人来说是个福音；对于那些美工来说，可以专门的编辑这些主题，供开发人员直接使用，很方便。<br />        Page Navigation 是可视化的页面导航配置（当然也可以直接写XML配置），可以让你把页面里可以有导航作用的组件（或者整个页面）通过拖拽到其他页面来自动配置页面的导航规则，同时给该组件加上return "toXXPage"的方法。<br />        清晰的将三种 Managed Bean 分类列举出来，很直观。<br />        Configuration File 下有熟悉的 faces-config.xml 和 web.xml 。其中 web.xml 可以让你可视化（如同选择、填表一样）配置 Web 的 Filter、Sevlet、Security、XML、General、Pages、Refference信息。以前这些复杂的配置都在这里可以很方便的进行了。<br /><br /><strong><font color="#000080"><br /><br /><br />下面我们就开始实现可以加入书签的URL，也就是GET请求<br /></font></strong><br />打开一个Page, 将组件托盘里的HyperLink拖拽到页面中间，作为导航入口。请记住，实现GET请求的导航必须是链接类型，而不能是按钮等动作类型的。<img height="315" alt="o_components.jpg" src="http://www.blogjava.net/images/blogjava_net/chords/18284/o_components.jpg" width="195" align="right" border="0" /><br /><br />在属性框里更改其Text，让这个链接显示成为你想要的文字。或者在本链接上点又键，选择Data Binding，将其绑定到一个属性上（以后详细介绍）。<br /><br />然后，在本链接属性框里的URL后写上 faces/page2.jsp?name=XXX <br /><font color="#ff0000"><strong>注意：一定要以faces/开头 </strong></font>。导航机制自动的将你的项目 http://localhost/yourProject/ 映射到 faces/ 下，然后faces/ 又将映射到 web/ 下。所以使用NetBean Visual Web开发的JSF部署后，如果要定位到某个页面，其名字不是 xxxPage.faces，<font color="#ff0000"></font><font color="#ff0000">而直接是 xxxPage.jsp !</font> 并且，http://localhost/yourProject/  将自动映射到本项目下默认的其实页面（设置方法是右键点要设为默认起始的页面，选设置为起始页面即可）。在上面的URL也可以输入绑定表达式和运算表达式，其中page2.jsp代表了就是你要导航到的页面，"?"后面就是“参数名字＝值”的形式，并且多个的参数和值对之间用&amp;链接，下面你将看到简单的根据这些参数名字获取到值的方法。<br /><br />新建一个叫page2的页面（方法很多，不用介绍了吧），从组件托盘中选择 Static Text 拖入到页面中，在属性面版中更改 ID 为 output 以便我们以后方便的使用。点击页面编辑器上 Java 按钮，进入到本页面的 Request Bean ， 这个 Bean 是在生成本页面时候自动生成的，与页面同名并且是 Request 范围的，主要就是负责页面的表示和逻辑。Visual Web会自动的为页面上每个组件生成相应的JAVA代码，也就是说，你可以在这个页面内动态的控制页面内每个组件的属性。<br /><br />下面我们要在 public void prerender() {   }方法中写上代码。   prerender() 方法是负责在页面生成前做好一切准备的工作的，如同其名字一样，预渲染。所以我们要在这个时候把刚才通过GET方法传到本页面的参数提取出来。方法很简单：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_25_193_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_193_Open_Text.style.display='none'; Codehighlighter1_25_193_Closed_Image.style.display='inline'; Codehighlighter1_25_193_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_25_193_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_25_193_Closed_Text.style.display='none'; Codehighlighter1_25_193_Open_Image.style.display='inline'; Codehighlighter1_25_193_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> prerender() </span><span id="Codehighlighter1_25_193_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_25_193_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (String) getExternalContext().getRequestParameterMap().get(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">( name </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000"> )<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.output.setText(name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span></div><br />通过getRequestParameterMap()就能获得所有的 参数名－值 的MAP，即可从中轻松的取得想要的参数值了。<br /><br />最后我们将 Static Text 的值设置为name参数的值，就大致的展示了我们能获得一个GET请求了！这样就可以让用户将此页面保存到书签（收藏夹），并且动态的获取信息，而不再是仅仅依靠内部导航机制了。<br /><br />结果我就不在这里展示了，自己动手体验下吧！<br />        <br /><br /><img src ="http://www.blogjava.net/chords/aggbug/87060.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chords/" target="_blank">Coody Sk8er</a> 2006-12-11 22:01 <a href="http://www.blogjava.net/chords/archive/2006/12/11/87060.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>