1.引入struts2-dojo-plugin-2.1.8.1.jar
2.代码说明
下面是struts文档中的代码:
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
<html>
<head>
<title>Ajax Examples</title>
<sx:head />
</head>
加载dojo标签库和加载dojo的js库
<s:form id="form" action="AjaxTest">
<input type="textbox" name="data">
<sx:submit />
</s:form>
简单的例子
<script type="text/javascript">
dojo.event.topic.subscribe("/before", function(event, widget){
alert('inside a topic event. before request');
//event: set event.cancel = true;
, to cancel request
//widget: widget that published the topic
});
</script>
<sx:submit beforeNotifyTopics="/before" />
加载上面这一段,则submit按钮按下之后,先执行alert,然后才会提交 。
一般来讲submit都是和事件(onclick)关联的,如果终止提交动作,则使用
event.cancel = true;
例如我们通常会对页面内容做个前台的校验,如果校验同过才提交到后台,
我们可以在上面的topic(/before)中加入校验的代码,如果发现错误就可以
用event.cancel = true;终止程序执行。
<script type="text/javascript">
dojo.event.topic.subscribe("/after", function(data, request, widget){
alert('inside a topic event. after request');
//data : text returned from request(the html)
//request: XMLHttpRequest object
//widget: widget that published the topic
});
</script><sx:submit afterNotifyTopics="/after"/>
加载上面这一段,则submit按钮按下,response收到之后才会执行alert。
这里的request我的理解是中间页面提交request。
3. 注意点、问题点
总是提示dojo的对象没有定义
试一下 http://mydomain/struts/dojo/struts_dojo.js
是不是打得开,如果不行估计要想点办法了。。。。。 对策正在调查中 :(