pub-sub模型提供了一种简化的事件监听方式,通过pub-sub事件模型,可以让一个js事件同时触犯多个事件处理函数,当我们把一个事件(也可能是一个普通函数)作为一个发布者注册到一个主题后,如果该事件被触发(普通函数被调用),则该主题下所有的事件处理函数都会被自动调用
我们看如下的jsp
<%
...
@ page contentType="text/html;charset=GBK" language="java"
%>
<% ... @ taglib prefix="s" uri="/struts-tags" %>
< html >
< head >
< title > pub-sub模型 </ title >
< s:head theme ="ajax" />
</ head >
< body >
pub-sub模型 < br >
< s:url id ="data" value ="/data.action" />
< s:submit type ="submit" theme ="ajax" value ="更新" align ="left" notifyTopics ="/change" />
< s:div theme ="ajax" id ="t1" cssStyle ="background-color:#bbbbbb;width:360px;height:80px" listenTopics ="/change" href ="${data}" />
</ body >
</ html >
<% ... @ taglib prefix="s" uri="/struts-tags" %>
< html >
< head >
< title > pub-sub模型 </ title >
< s:head theme ="ajax" />
</ head >
< body >
pub-sub模型 < br >
< s:url id ="data" value ="/data.action" />
< s:submit type ="submit" theme ="ajax" value ="更新" align ="left" notifyTopics ="/change" />
< s:div theme ="ajax" id ="t1" cssStyle ="background-color:#bbbbbb;width:360px;height:80px" listenTopics ="/change" href ="${data}" />
</ body >
</ html >
上面代码让一个“更新”按钮作为事件发布者,让一个div元素作为事件订阅者,意思就是说每当单击“更新”按钮时,该按钮将会把单击事件发布到/change主题,儿订阅者div元素的默认行为(更新自己内容)被触发
data.jsp
<%
...
@ page contentType="text/html;charset=GBK" language="java"
%>
<% ... @ taglib prefix="s" uri="/struts-tags" %>
<% = Math.random() > 0.5 ? " Spring2.0宝典 " : " 轻量级J2EE企业应用实战 " %>
<% ... @ taglib prefix="s" uri="/struts-tags" %>
<% = Math.random() > 0.5 ? " Spring2.0宝典 " : " 轻量级J2EE企业应用实战 " %>
struts.xml
<!
DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd" >
< struts >
< constant name ="struts.custom.i18n.resources" value ="messageResource" />
< constant name ="struts.i18n.encoding" value ="GBK" />
< package name ="ajax" extends ="struts-default" >
< action name ="data" >
< result > /data.jsp </ result >
</ action >
</ package >
</ struts >
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd" >
< struts >
< constant name ="struts.custom.i18n.resources" value ="messageResource" />
< constant name ="struts.i18n.encoding" value ="GBK" />
< package name ="ajax" extends ="struts-default" >
< action name ="data" >
< result > /data.jsp </ result >
</ action >
</ package >
</ struts >