Sun Java Studio Creator IDE 中的导航方案
使用页面片段可以有限地实现类似框架的导航。
引言
Sun Microsystem 的 Studio Creator 是一款用于创建纯 Java 多层 Web 应用程序的开发工具,它与一些 Microsoft 产品类似,最新的是基于 .NET Framework 的 Visual Studio。
本文基于该产品的早期版本之一。关注此产品的论坛很活跃,开发人员正在尝试体验该产品的可利用程度。
用户需要的一个可用性功能是在 Web 应用程序中拥有与使用框架和框架集创建的多窗口应用程序相同的应用程序,这使得页面导航非常容易。根据其团队成员在论坛中显示的信息,目前 Sun Creator IDE 不支持此功能。
Sun Creator IDE 中的页面导航由页面之间或由 XML 文件(正确地称为Navigation.xml)定义的组件和页面之间的自定义链接处理。这些链接[导航处理程序]仅为 JSP 页面和 JSF 组件定义。这些链接只能为 JSP 页面或组件定义,不包括 HTML(HTM) 页面,甚至不包括 JSF 结构的“页面片段”。在这种情况下,框架[窗口]之间的导航基于 HTML 的 DTD 中的分层父子关系。
前面描述的页面片段对象与 Visual Studio 世界中的“用户控件”类似,是 RAD 的可重用对象。它们非常有吸引力,因为原则上,它们可以拖放到 JSP 上。但是,目前它似乎没有包含在此 IDE 的导航方案中。
本文介绍了一种使用页面片段实现此体验的方法,但这未能达到使用框架和框架集获得的“完整体验”。使用页面片段的导航方案
下面的屏幕截图显示了如何在该 IDE 中实现“类似框架”导航的方案。在主 JSP 中,创建一些模拟框架的 div,并创建可以拖放到其插槽中或使用页面片段框容器合并的“页面片段”。导航页面片段中的“链接”[HTML 链接]会将其源绑定到命名目标,即页面中的<iframe/>
,如所示

此页面上的元素
top.jsp
放置任何元素之前,主页面HTML内容如下所示
<?xml version="1.0" encoding="UTF-8"?>
<jsp:root version="1.2"
xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
xmlns:jsp="http://java.sun.com/JSP/Page">
<jsp:directive.page contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"/>
<f:view>
<html lang="en-US" xml:lang="en-US">
<head>
<meta content="no-cache" http-equiv="Cache-Control"/>
<meta content="no-cache" http-equiv="Pragma"/>
<title>Page1 Title</title>
<link href="resources/stylesheet.css" rel="stylesheet"
type="text/css"/>
</head>
<body style="-rave-layout: grid">
<div style='color:yellow;left:50px;top:10px;width:500px;background-
color:green;height:80px;position:absolute'><p>Header</p></div>
<div style='color:yellow;height:400px;left:50px;top:90px;
width:150px;background-color:blue;position:absolute'><p>Navigator</p></div>
<div style='color:yellow;height:400px;left:200px;top:90px;
width:350px;background-color:yellow;position:absolute'><iframe src=""
width="350" height="400" name="t1">Test...test..</iframe></div>
<h:form binding="#{top.form1}" id="form1"/>
<div style='color:yellow;height:80px;left:50px;top:490px;
width:500px;background-color:red;position:absolute'><p>Footer</p></div>
</body>
</html>
</f:view>
</jsp:root>
此 JSP 页面在 IE 中呈现如下所示

向项目添加页面片段
将向项目添加三个页面片段:用于“页眉”的hdr.jspf、用于“导航器”区域的nav.jspf 和用于“页脚”的ftr.jspf。如果右键单击项目并选择添加“页面片段”,则会显示以下屏幕,从中可以添加页面片段并为其命名。

页眉页面片段:hrd.jspf
这里只放置了一个图形。IDE 具有名为“Palette
”的工具箱,可以从中插入图像,该图像会调出一个对话框,用于从文件或 URL 插入图像,如该屏幕截图所示
<?xml version="1.0" encoding="UTF-8"?>
<div style="-rave-layout: grid" xmlns:h="http://java.sun.com/jsf/html">
<h:graphicImage binding="#{hdr.image1}" id="image1" style="left: 25px;
top: 25px; position: absolute" value="resources/ASPNET_01.gif"/>
</div>
页脚页面片段:ftr.jspf
页脚页面片段是放置在无边框表格中的少量文本。尽管 IDE 在某些时候[在某些构建点]允许拖放,但正确的方法是首先从“palette
”中放置一个“页面片段框”,该框充当页面片段的容器。放置“页面片段框”会调出以下对话框,该对话框列出了项目中的所有页面片段

此页面的代码如下所示
<?xml version="1.0"?>
<div style="-rave-layout: grid">
<table bgcolor='black' width='500px' style='color:yellow;
font-size:15;font-weight:bold'>
<tr><td>Copy Right of:</td></tr>
<tr><td>Hodentek 2004</td></tr>
<tr><td><font color='magenta'> http://www.mysorian.com</font></td></tr>
</table>
</div>
导航器页面片段:nav:psfg
此页面片段包含各种链接,这些链接的目标是此页面上放置的<Iframe/>
,如以下代码所示
<?xml version="1.0"?>
<div style="-rave-layout: grid">
<ul style='width:150px;background-color:#D2D2FF;color:magenta;height:400px'>
<li><a href="http://www.sun.com" target="t1">Sun Microsystems</a></li>
<li><a href="http://www.yahoo.com" target="t1">Yahoo</a></li>
<li><a href="http://www.microsoft.com" target="t1">Microsoft</a></li>
</ul>
</div>
构建和运行项目
构建并运行项目后,这些链接的功能将非常类似于框架和框架集模式,如下三个屏幕截图所示
Microsoft链接

雅虎链接

Sun Microsystem链接

链接到 JSP 时出错
通过添加,向导航器页面片段添加了一个额外的列表元素来链接到此项目中的测试 JSP
<li><a href="https://:18080/navigation/Test.jsp" target="t1">
Test JSP</a></li>
但是,此链接产生了下一个屏幕截图中显示的错误。

使用“faces”上下文进行导航 [2004年8月21日添加]
尽管使用Navigation.xml方案上述过程失败了,但可以使用“faces
”上下文进行导航。这已使用以下方法进行了验证
<li><a href="https://:18080/navigation/faces/Test.jsp" target="t1">
Test JSP</a></li>
结论
- 2004年8月21日:结论已修改
可以使用Navigation.xml结构或使用“faces
”上下文,创建使用JSP的'frame
/frameset'
操作模式。
作者感谢 Sun Studio Creator 团队成员建议在链接到 JSP 时使用“faces
”上下文。