开发富客户机
本节演示如何配置 Laszlo IDE 工作空间、创建新的 Laszlo 项目以及启动 Laszlo 服务器。关于开发方面,它介绍了利用 Laszlo 组件、事件脚本编程、数据绑定、调试、在 IDE 中运行应用程序,以及打包。
配置 Laszlo IDE —— 特定于工作空间
配置 Laszlo IDE 是特定于工作空间的。参见图 12 所示的 Eclipse Preferences 窗口。可以通过从 Eclipse 主菜单选择 Window > Preferences
而到达配置面板。Laszlo IDE 必须被配置为从 IDE 运行 Laszlo 应用程序。主要的要求是指定 LPS Web
Root、Context Root 和应用服务器端口(Apache Tomcat)。LPS Web Root 是 Laszlo
服务器的安装实例所驻留的地方,并需要指向 Context Root。图 12 中定义的端口是 Apache Tomcat servlet
容器所监听的默认端口。默认的设计视图和首选设置是 Local Design View。它使得编辑组件属性更加容易。可选地,Live
Design View 可以被启动为用于编辑的默认视图。一个浏览器选项可以用于从 IDE 启动应用程序。
图 12. Laszlo IDE 配置面板
创建 Laszlo 项目
在可以开始开发 Laszlo 工件之前,需要创建一个项目用于容纳它们。要创建 Laszlo 项目,请执行以下步骤:
- 从 Eclipse 主菜单选择 File > New > Project
。就会出现新建项目向导,如图 13 所示。
图 13. New Laszlo Project 向导
- 选择向导类型 Laszlo Project
,然后单击 Next
。
- 输入项目名称,并单击 Next
,如图 14 所示。
图 14. 命名新的 Laszlo Project 向导
- 定义定制的 LPS 选项,如图 15 所示,并单击 Finish
。
图 15. Laszlo Project LPS 设置
一旦完成 Laszlo Project 向导,您就会被提示切换到 Laszlo 透视图。然后就会创建一个类似于图 16 所示的新项目。
图 16. 新的 Laszlo 项目
注意,在图 16 中,新的 Laszlo 项目包含两个组件库。
创建了 Laszlo 项目之后,您就可以开始添加 Laszlo 或 LZX 文件了。要创建新的 Laszlo 文件,请执行以下步骤:
- 如果已经在 Laszlo 透视图中,则从 Eclipse 主菜单选择 File > New > Laszlo File
。
- 如图 17 所示,输入一个与您的项目相对的容器目录、一个文件名和一个文件类型(对于可视化页面就是
Canvas
,对于 Laszlo 类的集合就是 Library
)、组件和/或工具。
图 17. 新建 Laszlo 文件向导
一旦完成新建 Laszlo 文件向导,您的项目就将包含一个类似于下面的新文件:
<?xml version="1.0" encoding="UTF-8" ?>
<canvas>
</canvas>
注意,这是一个 .xml 文件,其中包含两个 canvas 标记,它们是可视化组件的容器。在本教程的后面,您将使用这个新文件来创建主页。
启动 Laszlo 服务器
在可以使用 Run as Laszlo application 功能部署和测试 Laszlo 应用程序之前,您的 OpenLaszlo 服务器必须在运行。
要在 Windows 中启动 OpenLaszlo 服务器,请从 Windows 任务栏选择 Start > Programs > OpenLaszlo Server > Start OpenLaszlo Server
。
执行 Laszlo 资源管理器的 Apache Tomcat 的一个捆绑的实例试图启动。也可以通过在运行 LPS 服务器时导航到
http://localhost:8080/lps-3.0.2/laszlo-explorer/index.jsp 而启动资源管理器。
要关闭服务器,可从 Windows 任务栏选择 Start > Programs > OpenLaszlo Server > Stop OpenLaszlo Server
,或者在服务器控制台窗口为激活的情况下按 Ctrl + C
。
布局应用程序主页和导航
通过开发主页(索引)和导航,开始 Laszlo 应用程序。导航是到视图和创建工作的两个链接。导航使用了由 XML 数据集填充的 <tree> 组件。通过将代码包含在 <library> 标记中,菜单代码可作为包含文件可用。
清单 2 展示了 menu.lzx 文件的内容。
清单 2. menu.lzx 文件的内容
<library>
<!-- Menu data -->
<dataset name="fm">
<nav nav="View Work"
url="viewWork.lzx?lzt=html"/>
<nav nav="Create Work Order"
url="createWork.lzx?lzt=html"/>
</dataset>
<!-- START NAVIGATION -->
<view width="200" height="200" x="20" y="120">
<tree datapath="fm:/" autoscroll="true" showroot="false">
<tree datapath="*"
text="$path{'@nav'}"
open="true"
isleaf="true"
selectiontype="single">
<method event="onactivate">
var url = this.datapath.xpathQuery('@url');
if (url != null) {
LzBrowser.loadURL(url,'_self');
}
</method>
</tree>
</tree>
</view>
<!-- END NAVIGATION -->
</library>
|
图 18 所示的索引页面是一个简单的页面,只包含菜单和一个 logo。
图 18. 索引页面
索引的代码执行一个菜单包含,也包含一个空的 <splash/>
标记,以便在加载应用程序时向用户展示一个进度条。<splash>
组件有两种形式,用于控制加载应用程序时的表示。一般的方式是,空标记或 <splash/>
默认触发一个进度条。另外,<splash/>
标记也可以包含视图元素,用于用任何定制的图像、元素或者您希望的加载动画覆盖默认的进度条。
清单 3 展示了 index.lzx 文件的内容。
清单 3. index.lzx 文件的内容
<canvas>
<view resource="/images/fm.gif"/>
<menuseparator width="600" x="-1" y="97" height="6"/>
<include href="lz/tree.lzx"/>
<splash/>
<include href="menu.lzx"/>
</canvas>
|
布局 Work Order 表单
即使您不了解 Laszlo 组件,这项工作也并不太难,并且也不妨碍您创建复杂的用户界面。图 19 所示的 Work Order 包含一个简单的表单。
图 19. FluidMotion work order 表单(Laszlo 表单元素)
Work Order 表单演示了使用一些不同的内置 Laszlo 组件。一个 XML 数据集驱动的组合框用于楼宇和楼层选择。包含楼宇和楼层数据的 XML 表示的位置数据集如清单 4 所示。
清单 4. 位置数据集
<dataset name="location">
<locations>
<building id="1" name="HQ">
<floor id="1">Floor 1</floor>
<floor id="2">Floor 2</floor>
<floor id="3">Mezzanine</floor>
</building>
<building id="2" name="Trump Tower">
<floor id="1">Trump 1</floor>
<floor id="2">Trump 2</floor>
<floor id="3">Trump 150</floor>
</building>
</locations>
</dataset>
|
清单 5 包含用于楼宇和楼层组合框的代码。
清单 5. 楼宇和楼层组合框
<text text="Building:"
fontstyle="bold" width="59" height="17"/>
<combobox defaulttext="choose one..." width="130"
editable="false" height="22" id="bl">
<textlistitem datapath="location:/locations[1]/building"
text="$path{'@name'}" id="bl_id"
value="$path{'@id'}"
onselect="getFloors(this.getValue());"/>
</combobox>
<text text="Floor:" fontstyle="bold" width="59"
height="17"/>
<combobox defaulttext="choose one..." width="130"
editable="false" height="22" id="fl">
<textlistitem id="fl_id" datapath=""
text="$path{'text()'}" value="$path{'@id'}"/>
</combobox>
|
注意 textlistitem
上的 datapath
属性。它将下拉列表中的值绑定到前面描述的位置数据集。冒号前面的文本表示数据集名称。冒号后面的值是组件绑定到的 XPath。文本和值分别使用 XPath 来选择将用作下拉列表中项目的文本和值的数据集属性。
在选择了楼宇之后,事件通过调用 getFloors()
方法并将它传递给当前楼宇 ID,来填充楼层组合框。清单 6 展示了楼宇组合框的 onselect
事件所调用的 getFloors()
方法。
清单 6. getFloors() 方法
<script>
<![CDATA[
// Highlight urgent requests
function getFloors(bl) {
fl='location:/locations[1]/building[@id=\''+bl+'\']/floor';
this.fl_id.setAttribute('datapath', fl);
this.fl_id.setAttribute('value','');
}
]>
</script>
|
联系人、e-mail、电话和描述(多行属性设置为 true
)是 <edittext>
组件。例如:
<edittext id="contact" x="348" width="130" height="17"/>
下面的严重性 <slider>
组件允许请求者给工作单分配一个严重性:
<slider maxvalue="4" minvalue="1" text="Severity" id="severity"
keystep="1" bordersize="1" yoffset="17"/>
下面的 Submit 按钮是一个标准的 <button> 组件,并允许提交表单。目前,这个表单不会被提交。后面,该表单将被提交给 Web 服务。
<button isdefault="true" text="Submit" x="350" onclick=""/>
布局工作视图
图 20 所示的工作视图使用 <grid>
组件以及其他嵌入式组件,来查看当前的工作请求。
图 20. FluidMotion view work 页面(Laszlo 网格组件)
该网格是用清单 7 中的静态数据集构建的,以建模它后面连接到的服务器端调用。
清单 7. 静态数据集
<dataset name="work">
<work>
<wo id="100301">
<date_req>11/15/2005</date_req>
<date_last_mod>11/18/2005</date_last_mod>
<bl_name>HQ</bl_name>
<fl_name>Floor 3</fl_name>
<contact>Tim Dennison</contact>
<email>tden@rockstar.rock</email>
<phone>679.111.1123</phone>
<description>
Need emergency service on my equipment!
</description>
<comments>I'm on it!</comments>
<severity>Low</severity>
<status>Complete</status>
</wo>
<wo id="100302">
<date_req>11/18/2005</date_req>
<date_last_mod>11/19/2005</date_last_mod>
<bl_name>Trump Tower</bl_name>
<fl_name>Trump 2</fl_name>
<contact>Donald Trump</contact>
<email>dtrump@trump.usa</email>
<phone>603.239.4326</phone>
<description>
Need recruiter machine repaired.
</description>
<comments>This is on hold for now.</comments>
<severity>Urgent</severity>
<status>On Hold</status>
</wo>
</work>
</dataset>
|
这个 Laszlo <grid>
组件可以包含 <gridcolumn>
组件,如清单 8 所示。
清单 8. Laszlo <grid> 组件可以包含 <gridcolumn> 组件
<grid datapath="work:/work[1]" contentdatapath="wo"
shownitems="7" height="135" width="625" id="wo_grid"
x="180" y="115" multiselect="false">
<gridcolumn resizable="false">Requested
<text datapath="date_req/text()" text="$path{'text()'}"/>
</gridcolumn>
<gridcolumn resizable="true" width="90">Contact
<text datapath="contact/text()"/>
</gridcolumn>
<gridcolumn resizable="false">Severity
<text datapath="severity/text()"/>
</gridcolumn>
<gridcolumn resizable="false" width="90">Status
<combobox defaulttext="Requested" editable="false"
id="status" datapath="status/text()">
<textlistitem text="Assigned" id="assigned"
value="assigned"/>
<textlistitem text="Active" id="active" value="active"/>
<textlistitem text="Complete" id="complete"
value="complete"/>
<textlistitem text="On Hold" id="hold" value="hold"/>
<textlistitem text="Cancelled" id="cancel"
value="cancel"/>
</combobox>
</gridcolumn>
<gridcolumn resizable="false" width="240">Comments
<inputtext datapath="comments/text()" id="comments"
text="comments/text()" multiline="true" height="35"
selectiontype="multi"/>
</gridcolumn>
</grid>
|
|
运行应用程序并调试
Laszlo IDE 允许开发人员从 IDE 启动正在开发的当前文件。您可以利用如图 21 所示的 Run As
命令,方法是简单地右击文档并选择 Run As > Laszlo Application
。然后,IDE 就启动了。
图 21. Laszlo IDE 的 Run As 特性
可以通过利用 debug.write()
方法而构造调试语句。调试语句如下所示:
debug.write("getting floors for " + bl);
debug.write("setting floor datapath to " + fl);
要查看调试窗口和结果,请将 canvas 标记上的 debug 属性设置为 true
,如图 22 所示。
<canvas width="100%" height="100%" debug="true">
图 22. Laszlo Debugger 窗口
将 Laszlo 保存为 .war 文件(捆绑和部署)
Laszlo IDE 允许开发人员通过执行以下步骤而捆绑标准的 J2EE Web archive (WAR) 文件:
- 从 Eclipse 主菜单选择 File > Export
。
- 选择 Laszlo WAR File
,如图 23 所示,并单击 Next
。
图 23. Laszlo .war 文件导出工具
- 如图 24 所示,从 Project 组合框选择一个 Laszlo 项目,并从 LPS 根目录中的 OpenLaszlo 服务器的适当目录,选择一个具有 .war 扩展名的适当目的文件。
图 24. Laszlo WAR Export 工具
Laszlo WAR Export 工具捆绑运行与 LPS
服务器无关的应用程序所需的所有必要的依赖项。换句话说,它使得应用程序可以虚拟地部署和运行在任何 Java Web
容器上。依赖项包括但不局限于所有的 .jar 文件、内置的 Laszlo 组件和 Laszlo DTD。它还包括所有基本 Laszlo
组件、CSS 文件、Java 类文件、Flash 和 HTML。这一特性使得将富客户机应用程序打包、部署和集成到 J2EE 架构中非常容易。
分享到:
相关推荐
OpenLaszlo —— 一个快速构建和部署富 Internet 应用程序的平台 -- Linux,C,C++,Java,Ajax,XML,perl,php,python,ruby,MySQL,Gnome,KDE,Qt,Gtk,bash,shell,嵌入式,网络,信息安全,操作系统,数据结构,编译原理
它允许开发者使用Web技术(HTML、JavaScript和Flash/Flex)构建富互联网应用(Rich Internet Applications,简称RIAs),然后将这些应用部署到桌面操作系统、移动设备和电视设备上。在构建Adobe AIR应用程序时,会...
它的IIS(Internet Information Services)Web服务器组件,是构建Web应用程序的关键工具。IIS支持多种Web技术,如ASP.NET、PHP和FTP服务,为开发者提供了丰富的功能和灵活性。 在构建可靠Web应用程序时,首先需要...
富应用程序编程,也称为 Rich Internet Application (RIA),是一种在互联网上提供类似桌面应用程序用户体验的技术。随着互联网技术的发展,用户对于在线应用的期望不断提高,而RIA技术正是为了满足这种需求而诞生的...
FLEX作为一款由Adobe公司推出的开源框架,以其强大的图形渲染能力和高度互动性的特点,在构建富互联网应用(Rich Internet Applications, RIA)方面展现出巨大潜力。 #### 二、FLEX技术概述 FLEX技术的核心在于...
关于Winlet是一个Java Web应用程序框架,用于构建由Winlet窗口组成的Rich Internet Applications。 Winlet窗口类似于Web窗口小部件,可以将其添加到任何网页(甚至是其他域中的静态网页),仅占网页的一部分,并使用...
VB构建INTERNET应用知识点 一、 Internet 技术概述 * Internet 技术是基于 TCP/IP 协议的全球性非集中管理的计算机网络 * Internet 技术为开发人员提供了广泛的施展空间 二、 VB 构建 INTERNET 应用 * 使用 ...
AppKitGWT是一款强大的开发工具,专为使用Google Web Toolkit (GWT) 构建富互联网应用程序(RIA)而设计。GWT是一个开源框架,允许开发者使用Java语言编写客户端代码,然后编译成高效的JavaScript,使得应用程序可以在...
构建Flex应用程序的过程涉及多个步骤,首先是使用Flex SDK(Software Development Kit)或集成开发环境(IDE)如Adobe Flash Builder 4。Flex SDK包含了编译器、类库和工具,而Flash Builder则提供了更高级的功能,...
2. **XAML 浏览器应用程序 (Xbap)**:一种特殊的基于Web的应用程序,其主要组成元素为XAML页面,可以在Web浏览器(例如Internet Explorer和Firefox)中运行。 3. **自定义控件库**:非可执行程序集,包含了一系列可...
### 构建安全的Microsoft® ASP.NET应用程序 #### 指南概述 本指南旨在为开发者提供关于构建安全Microsoft ASP.NET应用程序的专业建议和技术指导。它不仅涵盖了基础的安全性概念,还深入探讨了如何在分布式环境中...
在Oracle数据库上构建JAVA应用程序,首先需要了解JDBC驱动程序的相关知识。JDBC(Java Database Connectivity)是一种Java语言中用于执行SQL语句的API,而JDBCDriver是JDBC的一部分,提供了一种标准的方法,使得Java...
### 使用VB构建Internet应用 在信息技术领域,利用Visual Basic(简称VB)开发Internet应用程序是一种非常实用且高效的方法。本文将详细介绍如何使用VB构建Internet应用,包括相关知识点、技术要点及其实现过程。 ...
### 集成Flex, Spring, Hibernate 构建应用程序 #### 概述 随着互联网技术的不断进步,富互联网应用(Rich Internet Application, RIA)因其出色的表现力和用户体验成为了现代Web开发的重要趋势之一。Adobe Flex ...
构建安全的 Microsoft® ASP.NET 应用程序:前言 更新日期: 2004年04月20日 本指南的目标 本指南不是介绍安全性,也不是 Microsoft .NET Framework 的安全性参考材料;如果您要了解这方面的内容,请查看 MSDN 中的...
C# Web应用程序是基于.NET框架开发的Web应用,它利用ASP.NET技术来构建动态网站、Web服务和富交互式Web应用程序。本教程将带你走进C# Web开发的世界,通过深入理解C#语言基础和ASP.NET核心概念,你将能够创建功能...