Struts2Dojo文档格式.docx
- 文档编号:21382961
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:46
- 大小:479.02KB
Struts2Dojo文档格式.docx
《Struts2Dojo文档格式.docx》由会员分享,可在线阅读,更多相关《Struts2Dojo文档格式.docx(46页珍藏版)》请在冰豆网上搜索。
虽然是一种很先进的客户端技术,但编写JavaScript代码(或者叫编写Ajax应用程序)仍令人望而生畏。
即使市面上已经有了许多IDE可以用来编写JavaScript代码,程序员仍不得不面对编写客户端程序的最大挑战:
浏览器的兼容问题。
摆在程序员眼前的事实是:
不同品牌的浏览器所实现的JavaScript总有一些细微的差异。
即使是同一个浏览器,在不同的操作系统里对JavaScript的解释也不完全相同。
因此,要想编写出一个能在所有浏览器里工作的脚本,程序员不得不在各种各样的操作系统里使用各种浏览器去测试它,并为用来实现同一种功能的代码编写多个版本。
诸如Dojo之类的JavaScript编程框架应运而生。
有了Dojo替我们去操心浏览器的兼容问题,我们只需编写和测试一次就可以完成工作了。
不用说,使用StrutsDojo插件作为Ajax平台,可以为你节省大量的时间。
27.2 Dojo的事件系统
JavaScript是一种基于事件的语言,但在跨浏览器环境里对事件进行管理就像噩梦一般。
幸好有Dojo赶来救火,它使程序员能够按照一种固定的套路去处理不同的事件。
Dojo允许我们把一个JavaScript函数与一个事件关联起来。
这意味着我们可以创建一个事件处理程序,并让它在某个事件发生时被调用。
Dojo提供的connect方法可以用来把一个事件和一个函数关联起来,disconnect方法可以用来切断这种关联。
Dojo的event对象是JavaScriptevent对象的规范化版本,而后者在不同浏览器里的行为往往有着细微的差异,也正是因为这一点才使得跨浏览器应用程序编写起来非常困难。
前者就不同了,它提供了一种统一的接口,它在支持这种接口的所有浏览器里的工作情况是一致的。
使用Dojo可以节约大量时间,因为你不再需要为你打算支持的每一种浏览器分别测试和优化代码。
除了规范化的event对象,Dojo还支持一种基于"
话题"
(topic)的消息处理机制来服务于匿名事件通信。
在这里,匿名的意思是说你随时可以把Web页面里的两个在此前彼此一无所知的元素关联起来。
你们可以把"
想象成一种逻辑上的通信管道,就像因特网上的邮件表那样。
如果某个人对某个邮件表感兴趣,他可以订阅这份邮件表,每当这个邮件表的某个订阅者发表了一条消息,整个邮件表里的所有订阅者都将看到那条消息。
类似地,在像Dojo这样的一个基于话题的消息处理处理系统里,每个Web对象(它可以是一个按钮、一个链接、一个表单、一个div元素等)都可以订阅话题和发表话题。
这意味着我们不仅可以通过编程让某个Ajax组件在其他Web对象发表话题时做一些事情,还可以通过编程让它发表一个话题去触发其他订阅者做一些事情。
如果你想发表一个话题,请使用publish方法。
请注意,你现在是在Dojo0.4版本里发表话题,在Dojo的新版本这么做有可能行不通:
dojo.event.topic.publish(topicName,arguments)
话题的名字可以是任何东西。
只要其他组件知道某个话题的名字,就可以订阅它。
在编写Ajax应用程序的时候,订阅某个话题的目的通常是为了在有消息发布到该话题时做些事情。
因此,在订阅一个话题的时候,你还需要定义你需要做什么或你想调用什么函数。
下面是在Dojo里订阅一个话题的方法。
再次提醒大家注意,我们正在讨论的是Dojo0.4版本。
Dojo.event.topic.subscribe(topicName,functionName)
StrutsDojo插件里的标签让话题的使用更加容易。
绝大多数标签无需JavaScript代码就可以订阅或发表一个话题。
例如,a标签有一个errorNotifyTopics属性,你可以用它来列出你想在该标签抛出一个错误时发布的话题。
div标签有一个startTimerListenTopics属性,当接收到这个属性所列出的某个话题时,该标签将让被呈现出来的HTMLdiv元素启动它的内部计时器。
在你学习过StrutsDojo插件里的标签之后,对基于话题的消息处理系统将会有更清晰的了解。
27.3 使用StrutsDojo插件
要想使用这个插件里的标签,你必须按照以下步骤进行。
(1)把下面这条taglib指令添加到JSP页面的顶部:
<
%@taglibprefix="
sx"
uri="
/struts-dojo-tags"
%>
(2)把StrutsDojo插件复制到你的WEB-INF/lib子目录里。
这个插件已被收录在本书的lib子目录里。
(3)在每个页面的顶部写出head标签。
现在,让我们一起去看看StrutsDojo插件里的标签。
27.4 head标签
head标签将被呈现为用来下载Dojo文件和配置Dojo本身的JavaScript代码。
使用了其他Dojo标签的每一个JSP页面都必须包含这个标签。
表27-1列出了head标签的属性。
表27-1 head标签的属性
名字
数据类型
默 认 值
说明
baseRelativePath
String
/struts/dojo
Dojo插件的安装路径
cache
boolean
true
是否让浏览器缓存Dojo文件
compressed
是否使用Dojo文件的压缩版本
debug
false
是否使用Dojo的调试模式
extraLocales
Dojo使用的其他地理时区的清单,
以逗号作为分隔符
locale
覆盖Dojo的默认地理时区设置
parseContent
在寻找组件(widget)时是否
分析整个文档
compressed属性(默认值是true)用来表明是否使用Dojo文件的压缩版本。
使用压缩版本可以节省加载时间,但生成的代码比较难以阅读。
如果是在开发模式下,建议大家把这个属性设置为false,这样比较便于你阅读本章讨论的标签所呈现出来的代码。
在开发模式下,你还应该把debug属性设置为true,把cache属性设置为false。
把debug属性设置为true将使得Dojo把警告消息和出错消息显示在页面的底部。
综上所述,你在开发模式下使用的head标签应该是下面这样:
sx:
headdebug="
true"
cache="
flase"
compressed="
false"
/>
在正式发布的应用程序里,head标签应该是下面这样:
head/>
27.5 div标签
这个标签将被呈现为一个可以动态地加载Web内容的HTMLdiv元素。
用这个标签呈现出来的div元素还有一个内部计时器,其用途是让div元素每隔一段给定的时间就重新加载一次它的内容。
使用div标签无需编程就可以实现一个滚动广告区。
这个标签的属性列在表27-2里。
表27-2
div标签的属性
afterNotifyTopics
将在请求之后(如果请求成功的话)
发表的话题清单;
话题之间使用逗
号作为分隔符
autoStart
boolean
是否自动启用计时器
beforeNotifyTopics
将在请求之前发表的话题清单,
话题之间使用逗号作为分隔符
closable
当把div标签放在一个选项卡式的
面板元素里时,是否显示一个Close按钮
delay
integer
在获取动态Web内容之前等待的毫秒数
errorNotifyTopics
将在请求之后(如果请求失败的话)
发表的话题清单,话题之间使用逗号
作为分隔符
errorText
在请求失败时显示的出错消息的文本
executeScripts
是否执行动态Web内容里的JavaScript代码
formFilter
用来过滤表单字段的函数
formId
其字段将被传递为请求参数的
表单的标识符
handler
用来对请求进行处理的JavaScript函数
highlightColor
用来对targets属性所指定元素
进行突出显示的颜色
highlightDuration
2000
对targets属性所指定元素进行
突出显示的持续时间(以毫秒为单位)。
这个属性只在highlightColor属性
有一个值时才起作用
href
用来获取动态Web内容的URL
indicator
服务器正在对请求进行处理时
显示的元素的标识符
javascriptTooltip
是否使用JavaScript来生成浮动提示框
listenTopics
将触发远程调用的话题
loadingText
Loading...
正在加载Web内容时显示的提示消息的文本
notifyTopics
在请求之前和之后以及在发生错
误时将发表的话题的清单,话题
之间使用逗号作为分隔符
openTemplate
用来打开被呈现HTML文件的模板
是否分析返回的动态Web内容以寻找组件
preload
是否在加载页面的同时加载动态Web内容
refreshOnShow
是否要在div元素变得可见时加
载动态Web内容。
这个属性只
在div标签在一个tabbedpanel
元素里时才起作用
separateScripts
是否要为每个标签单独创建一个
范围来运行脚本代码
showErrorTransportText
是否显示出错消息
(续)
showLoadingText
是否在加载动态Web内容时在
目标区域显示“正在加载”消息
startTimerListenTopics
将启动计时器工作的话题
stopTimerListenTopics
将停止计时器工作的话题
transport
XMLHttpTra-
nsport
用来传递相关请求的传输对象
updateFreq
动态内容的刷新频率
(以毫秒为单位)
div标签还继承了本书第5章列出的所有标签都有的共同属性。
我们为这个标签准备了3个例子。
27.5.1 示例程序1
代码清单27-1里的Div1.jsp页面使用了一个div标签来每隔3秒自动刷新一次。
href属性指定返回动态Web内容的服务器位置,updateFreq属性指定以毫秒为单位的刷新频率。
因为autoStart属性的默认值是true,所以内部计时器将自动启动。
代码清单27-1
Div1.jsp页面
这个标签有一个很有意思的功能,它能以指定颜色突出显示被呈现出来的div元素,然后逐渐消退。
你可以使用它的highlightColor属性来指定突出显示的颜色。
如果你想测试一下代码清单27-1里的这个标签,在你的浏览器里输入如下所示的URL地址即可:
//localhost:
8080/app27a/Div1.action
27.5.2 示例程序2
在代码清单27-2给出的Div2.jsp页面里,div标签的startTimerListenTopics属性被设置为订阅一个startTimer话题。
每当某个组件发表这个话题的时候,这个div标签的内部计时器就会启动。
我们使用了一个提交按钮来发表一个startTimer话题。
代码清单27-2
Div2.jsp页面
如果你想测试一下这个例子,在你的浏览器里输入如下所示的URL地址即可:
8080/app27a/Div2.action
单击Starttimer按钮将启动这个标签的内部计时器。
27.5.3 示例程序3
代码清单27-3给出的Div3.jsp页面演示了如何使用div标签来发表一个话题。
代码清单27-3
Div3.jsp页面
这个div标签的内部计时器被设置成每隔两秒关闭一次,在每次关闭其内部计时器时,这个标签将发表一个updateCounter话题,而这个话题又被赋值给了它的afterNotifyTopics属性。
我们还使用了Dojo插件的subscribe方法来订阅这个话题,让某个特定的函数在这个div标签每次发表这个话题时运行。
与updateCounter话题相关联的那个函数将增加一个计数器并改变第二个div标签的内容。
8080/app27a/Div3.action
27.6 a标签
a标签将被呈现为一个HTML页面链接,点击这个链接将发出一个Ajax请求。
这个标签的target属性用来指定一个元素(通常是一个div元素)来显示相关的Ajax响应。
如果嵌套在某个表单的内部,这个标签将在用户点击该链接时提交该表单。
表27-3列出了a标签的属性。
表27-3
a标签的属性
将在请求之后(如果请求成功的话)发表的话题清单,话题之间使用逗号作为分隔符
ajaxAfterValidation
如果验证成功,是否发出一个异步请求。
这个属性只在validation属性被设置为true时才起作用
将在请求之前发表的话题清单,话题之间使用逗号作为分隔符
将在请求之后(如果请求失败的话)发表的话题清单,话题之间使用逗号作为分隔符
其字段将被传递为请求参数的表单的标识符
用来对targes属性所指定的元素进行突出显示的颜色
对targets属性所指定的元素进行突出显示的持续时间(以毫秒为单位)。
这个属性只在highlightColor属性有一个值时才起作用
用来提取动态Web内容的URL
服务器正在对请求进行处理时显示的元素的标识符
Loading...
在请求之前和之后以及在发生错误时将发表的话题的清单,话题之间使用逗号作为分隔符
用来打开被呈现的HTML文件的模板
是否分析返回的动态Web内容以寻找部件
是否要为每个标签单独创建一个范围来运行脚本代码
是否在加载动态Web内容时在目标区域显示“正在加载”消息
targets
其内容将被刷新的元素清单;
元素之间使用逗号作为分隔符
XMLHttpTransport
validate
是否进行Ajax验证
a标签还继承了本书第5章列出的所有标签都有的共同属性。
例如,代码清单27-4里的A.jsp页面使用了一个a标签来填充div元素div1和div2。
代码清单27-4
A.jsp页面
如果你想测试一下这个标签,在你的浏览器里输入如下所示的URL地址即可:
8080/app27a/A.action
27.7 submit标签
submit标签将呈现为一个能够以异步方式提交一个表单的提交按钮。
这个标签有3种呈现类型可供选择,程序员只需把相应的值赋给它的type属性即可。
这3种渲染类型如下所示。
input:
把submit标签渲染为<
inputtype="
submit"
.../>
button:
buttontype="
image:
image"
类似于a标签,submit标签也有一个target属性,其用途是给出将用来显示表单处理结果的元素。
submit标签的属性如表27-4所示。
此外,submit标签还继承了本书第5章列出的所有标签都有的共同属性。
表27-4 submit标签的属性
用来对targets属性所指定元素进行突出显示的颜色
对targets属性所指定元素进行突出显示的持续时间(以毫秒为单位)。
meth
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts2Dojo