web程序需要完成 html <--> java
之间的映射,在界面越来越复杂,越来越多变的今天,这项工作也变得越来越困难。按照级列设计理论的观点,我们应该去寻求一些中间的过渡步骤。在
witrix平台中,tpl模板引擎正扮演了这种中间角色。通过tpl模板我们实现了如下映射路径
html <--> tpl <--> java
注
意到这里html与tpl之间,以及tpl与java之间的映射都不是trivial的同构关系,而是都可能存在着复杂的运算过程,从而实现了html与
java映射过程中复杂性的分解与均摊。tpl与java之间的关联主要通过EL(expression
language)表达式来完成,而html与tpl的映射则主要通过自定义标签(tag)机制。
注意到tpl所提供的中间层具有独立的重大意
义,它并不是臆造的或者是简单的技术驱动的结果。实际上,在web开发中除了java结构与html结构之外还存在着第三种结构,即用户眼中的界面结构,
本来它与html所描述的结构是简单的一一对应的,但是随着界面技术的发展,html的描述能力逐渐被耗尽,成为了internet时代的"汇编语言"。
现在一个简单的页面片断就可能对应着大量html代码,因而丧失了"所写即所见"的简单性。tpl通过强大的抽象能力在某种程度上恢复了程序员对于界面表
现结构的直观控制能力,并在一定程度上保留了html所见即所得的特性。
在witrix平台中因为存在着tpl这一强大的抽象层,使得我们对于ajax的支持可以采取更加灵活的方式。
ajax(Asynchronous JavaScript + XML)的标准结构是
html <--> js <==> xml <==> java
在
这种结构中通过xml信道的只是数据,而界面的表达逻辑与展现逻辑完全由js来控制。这种结构发展的一个极端是所有的界面展现结构都由
javascript动态构造出来,而完全丧失了html静态描述的特点,丧失了所见即所得的设计。与直接实现html<-->java之间
的映射情况类似,直接实现 html <-->
js之间的映射也是困难的,尽管dom模型的支持可能使得js映射的难度要低于java映射。
在witrix平台中ajax的方案为
html <--> js <==> tpl <--> java
即tpl取代了ajax标准方案中xml的位置,使得映射过程的复杂性得以分散化。
结合jsplet框架的拉模式(pull mode),我们定义了如下ajax访问接口
js.ajax.load({request='objectName=/@Test&objectEvent=query',tpl:'/test.tpl:partA',targetId:'testDiv'});
1。 远程服务请求就是一段普通的http post request, 避免了额外的xml编码解码需求。
2。请求到的数据先由tpl文件来进行处理。注意到这里tpl文件的url分成两部分,前一部分是tpl文件的虚拟路径,而 :后面的部分,即partA指出请求的是该tpl文件内的partA部分,而不是整个tpl文件。
3。返回的html结果被填充到targetId所指定的html元素中。
test.tpl文件的内容
<html>
<body>
<tpl:define id="partA">
<img tpl:tag="ui:EditTable" />
</tpl:define>
<div id="testDiv">
<img tpl:tag="ui:ViewTable" />
</div>
</body>
</html>
tpl具有强大的结构构造能力,在这里我们以非常小的代价实现了tpl片断的定义,例如test.tpl中的partA部分。这里通过id访问tpl片断就如同js中通过id来访问html片断一样。
最后提一个很重要的思想:大量零碎的代码片断需要集中存放,否则人的精力会被耗散。一个反例就是struts中的action, 明明只干那么点事,偏偏要占据一个单独的java文件,占据大量单独的配置条目,最终给程序员带来很大的困扰。
分享到:
相关推荐
在ASP.NET开发中,有时我们需要处理大量的数据,例如从Excel文件中导入数据到数据库。当数据量较大时,用户可能需要等待较长时间,此时提供一个进度条和百分比统计能够显著提升用户体验。本文将深入探讨如何使用ASP...
这里使用FormData对象的原因是它可以支持文件上传,而传统的form表单在处理文件上传时需要设置enctype为multipart/form-data,而这在Ajax请求中是不支持的。 在Ajax请求中,设置了一些关键的选项,比如type为POST...
Struts2框架,作为Java Web开发中的明星框架之一,自然也紧跟时代步伐,提供了强大的Ajax支持。 Struts2之所以能够在Ajax领域独树一帜,主要是因为它采取了“站在巨人肩膀上”的策略,即没有重新发明轮子,而是集成...
本文将深入探讨如何使用AJAX技术、Java和Struts框架来实现一个功能,即通过AJAX实现Excel文件的上传,并将其中的数据导入到数据库中。 首先,我们需要了解AJAX(Asynchronous JavaScript and XML)的核心概念。它是...
在现代Web应用中,AJAX(Asynchronous JavaScript and XML)技术被广泛用于创建动态和交互式的用户界面,它允许页面在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。然而,传统的浏览器后退和前进...
2. **启用AJAX支持**:在Visual Studio中创建一个新的ASP.NET Web应用程序时,可以选择"Enable Ajax"选项来开启AJAX支持。 3. **添加ScriptManager**:在页面的头部添加`<asp:ScriptManager>`控件,它是ASP.NET AJAX...
**.NET框架中的Ajax支持** Microsoft .NET框架提供了多种工具和库来支持Ajax开发,其中最著名的是ASP.NET AJAX(以前称为Atlas)。ASP.NET AJAX包括一组服务器端控件和客户端脚本库,允许开发者轻松地创建响应式的...
### Drupal 7 导入翻译时出现“An AJAX HTTP error occurred”错误的解决方案 #### 错误现象描述 在尝试导入Drupal 7站点的翻译时,可能会遇到一个名为“An AJAX HTTP error occurred”的错误提示。该错误通常伴随...
方法:在网站根目录下新建一个目录(目录名为英文名),将原始图片拷贝进去,打开添加页面,导入即可。 说明:原始图片太大或太多,可在本地服务导入,然后将数据库和图片文件夹上传上去即可。
jquery1.9.1 支持低版本ajax (ajax前jQuery.support.cors=true )
AJAXCache是一款针对jQuery库设计的插件,其主要功能是为$.ajax()方法提供缓存支持。在Web开发中,AJAX(Asynchronous JavaScript and XML)技术被广泛用于实现页面的部分更新,提高用户体验,而缓存机制则进一步...
在批量导入的场景中,AJAX可以用于异步上传文件,提高用户体验,避免用户等待整个页面刷新。通过XMLHttpRequest对象,开发者可以在后台与服务器进行通信,接收或发送数据,而不会打断用户的交互。同时,AJAX还可以...
在描述中的"遮罩层支持ajax"意味着在后台数据加载过程中,遮罩层会显示,给用户一个明确的反馈,表明页面正在处理中。 2. **页面加载中遮罩层**:遮罩层通常是一个半透明的div,覆盖在网页上,用于提示用户页面正在...
随着技术的发展,XMLHttpRequest的广泛支持和JavaScript库(如jQuery、Prototype等)的出现,AJAX的应用变得更加便捷,推动了Web 2.0时代的到来。 3. **简单的定义**: AJAX是一种技术组合,包括JavaScript、...
在WCF中,通过启用AJAX支持,可以创建能够与JavaScript交互的Web服务,从而实现页面无刷新的异步数据交换。这在构建富客户端Web应用时非常有用,因为它提供了更好的用户体验。启用AJAX调用通常涉及到以下步骤: 1. ...
2. 开始使用Ajax4jsf 环境需求 下载Ajax4jsf 安装 简单的 AJAX Echo 项目 JSP 页面 数据 Bean faces-config.xml Web.xml 部署 3. Ajax4jsf 框架的基本概念 介绍 结构概览 如何做... 发送一个AJAX 请求 ...
在.NET框架中,为了更好地支持AJAX特性,我们需要对项目的`Web.config`文件进行特定的配置。 #### Web.config文件结构分析 `Web.config`是ASP.NET应用程序的核心配置文件,它包含了运行时的各种设置和配置信息。...
在此项目中,使用Ajax实现Google自动搜索的极度相似功能,可能涉及以下步骤: 1. 用户在输入框中输入查询关键字时,触发JavaScript事件。 2. Ajax发送异步请求到服务器,传递查询关键字。 3. 服务器接收到请求后,...
在Lotus Domino这个强大的协作平台中,AJAX的应用同样能够显著增强其功能性和交互性。本文将深入探讨AJAX如何与DOMINO结合,以及两个示例文件——"ajax进度条示例.nsf"和"ajax数形菜单.nsf"所展示的应用场景。 1. *...