Webx Pulltoll分析

  1. 云栖社区>
  2. 博客>
  3. 正文

Webx Pulltoll分析

技术小阿哥 2017-11-21 22:08:00 浏览971
展开阅读全文

 


  1. <form action="$petstoreLoginLink" method="post"> 
  2.   <input type="hidden" name="action" value="LoginAction"/> 
  3.   <input type="hidden" name="return" value="$!rundata.parameters.return"/> 
  4.  
  5.   #set ($group = $form.login.defaultInstance) 
  6.  
  7.   …… 
  8.  
  9.   <input type="image" src="$homeContent.getURI("images/btn_login.png")" name="event_submit_do_login" /> 
  10.  
  11.   …… 
  12. </form> 

$petstoreLoginLink,$!rundata.parameters.return,$form.login.defaultInstance,$homeContent.getURI("images/btn_login.png")

他们是如何产生的呢?从pulltoll中注入过来的。哪些地方注入来的呢?看如下的pulltool配置:


  1. <!-- 定义在webx.xml中 --> 
  2.  
  3. <service name=“PullService” class=“com.alibaba.service.pull.DefaultPullService”> 
  4.  
  5.     <!-- 全局pull tools --> 
  6.     <property name="tool.global"> 
  7.         <property name="util" value="com.alibaba.service.pull.LangToolSet"/> 
  8.     </property> 
  9.  
  10.     <!-- 局部pull tools --> 
  11.     <property name="tool.request"> 
  12.         <property name="control" value="com.alibaba.turbine.util.template.ControlTool"/> 
  13.         <property name="control.sharing" value="false"/> 
  14.         <property name="form" value="com.alibaba.service.form.FormTool"/> 
  15.         <property name="form.sharing" value="false"/> 
  16.         <property name="page" value="com.alibaba.turbine.util.template.HtmlPageAttributeTool"/> 
  17.         <property name="page.sharing" value="true"/> 
  18.         <property name="rundata" value="com.alibaba.turbine.util.template.RunDataTool"/> 
  19.         <property name="rundata.sharing" value="true"/> 
  20.         <property name="uri" value="com.alibaba.service.uribroker.URIBrokerTool"/> 
  21.         <property name="uri.sharing" value="false"/> 
  22.     </property> 
  23.  
  24. </service> 

  在webx2中,要成为被vm中取得的pulltool,需要做到2件事情:一是实现pulltool接口,二是在xml中配置可以被velocity解析的pulltool类。

  pulltool接口,提供了web方向的实现类:WebxPullToolSupport等...,也提供了非web方向的实现类:CsrfToken等...。

2、自定义pulltool

方式1:webx2的方式,继承。

步骤1:继承自WebxPullToolSupport


  1. public class MyPullTool extends WebxPullToolSupport { 
  2.     /* 
  3.      * (non-Javadoc) 
  4.      * @see com.alibaba.service.pull.PullToolSupport#init() 
  5.      */ 
  6.     @Override 
  7.     protected Object init() throws PullException { 
  8.         System.out.println("MyPullTool init."); 
  9.         return super.init(); 
  10.     } 
  11.  
  12.     private String username = "zhangsan"
  13.  
  14.     /** 
  15.      * @return the username 
  16.      */ 
  17.     public String getUsername() { 
  18.         return username; 
  19.     } 
  20.  
  21.     /** 
  22.      * @param username the username to set 
  23.      */ 
  24.     public void setUsername(String username) { 
  25.         this.username = username; 
  26.     } 

步骤2:在webx.xml中配置


  1. <!-- 将beans暴露给模板。这里定义的tools可被所有components之间共享。 --> 
  2.     <services:pull xmlns="http://www.alibaba.com/schema/services/pull/factories"> 
  3.         <utils /> 
  4.         <page-tool /> 
  5.         <control-tool /> 
  6.         <uris-tool /> 
  7.  
  8.         <webx2-tool id="unicornTool" 
  9.             class="com.alibaba.intl.web.unicorn.pull.UnicornPullTool" scope="request" /> 
  10.          
  11.         <webx2-tool id="myPullTool" class="com.alibaba.sample.petstore.sample.pulltool.MyPullTool" scope="request"/> 
  12.     </services:pull> 

步骤3:在页面中引用


  1. username: $myPullTool.username 

 

 本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/687288,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论