Board logo

标题: 用 continuation 开发复杂的 Web 应用程序(6) [打印本页]

作者: look_wt    时间: 2018-10-15 18:37     标题: 用 continuation 开发复杂的 Web 应用程序(6)

应用程序站点地图示例购物应用程序的站点地图如清单 3 所示:
清单 3. 示例应用程序的 Cocoon 站点地图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0"?>
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
<map:flow language="javascript">
   <map:script src="pos.js"/>
</map:flow>
<map:pipelines>
   <map:pipeline>
     <map:match pattern="page/*">
       <map:generate type="jx" src="screens/{1}.xml"/>
       <map:transform src="context://samples/common/style/xsl/html/simple-page2html.xsl">
         <map:parameter name="servletPath" value="{request:servletPath}"/>
         <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
         <map:parameter name="contextPath" value="{request:contextPath}"/>
         <map:parameter name="file" value="/samples/flow/jxrate/screens/{1}.xml"/>
       </map:transform>
       <map:serialize/>
     </map:match>
   </map:pipeline>
   <map:pipeline>
     <map:match pattern="continue.*">
       <map:call continuation="{1}"/>
     </map:match>
     <map:match pattern="">
       <map:call function="sellItem"/>
     </map:match>
   </map:pipeline>
</map:pipelines>
</map:sitemap>




XML 文件中的第一个块(
flow)向 Cocoon 声明:Flowscript 解释器必须用 JavaScript 作为目标语言,实现应用程序的流逻辑(flow logic)的源代码在文件 pos.js 中。

下一个代码块则实际声明了应用程序要使用的管道。它定义了以下三个管道:
请注意,所有组件一般都要在站点地图中声明。我不需要声明清单 3 中的应用程序组件,因为我把示例应用程序作为 Cocoon 示例的一部分运行,其中有一个顶级站点地图,已经替我声明了这些组件(例如jx)。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0