- <form action="$petstoreLoginLink" method="post">
- <input type="hidden" name="action" value="LoginAction"/>
- <input type="hidden" name="return" value="$!rundata.parameters.return"/>
- #set ($group = $form.login.defaultInstance)
- ……
- <input type="image" src="$homeContent.getURI("images/btn_login.png")" name="event_submit_do_login" />
- ……
- </form>
$petstoreLoginLink,$!rundata.parameters.return,$form.login.defaultInstance,$homeContent.getURI("images/btn_login.png")
他们是如何产生的呢?从pulltoll中注入过来的。哪些地方注入来的呢?看如下的pulltool配置:
- <!-- 定义在webx.xml中 -->
- <service name=“PullService” class=“com.alibaba.service.pull.DefaultPullService”>
- <!-- 全局pull tools -->
- <property name="tool.global">
- <property name="util" value="com.alibaba.service.pull.LangToolSet"/>
- </property>
- <!-- 局部pull tools -->
- <property name="tool.request">
- <property name="control" value="com.alibaba.turbine.util.template.ControlTool"/>
- <property name="control.sharing" value="false"/>
- <property name="form" value="com.alibaba.service.form.FormTool"/>
- <property name="form.sharing" value="false"/>
- <property name="page" value="com.alibaba.turbine.util.template.HtmlPageAttributeTool"/>
- <property name="page.sharing" value="true"/>
- <property name="rundata" value="com.alibaba.turbine.util.template.RunDataTool"/>
- <property name="rundata.sharing" value="true"/>
- <property name="uri" value="com.alibaba.service.uribroker.URIBrokerTool"/>
- <property name="uri.sharing" value="false"/>
- </property>
- </service>
在webx2中,要成为被vm中取得的pulltool,需要做到2件事情:一是实现pulltool接口,二是在xml中配置可以被velocity解析的pulltool类。
pulltool接口,提供了web方向的实现类:WebxPullToolSupport等...,也提供了非web方向的实现类:CsrfToken等...。
2、自定义pulltool
方式1:webx2的方式,继承。
步骤1:继承自WebxPullToolSupport
- public class MyPullTool extends WebxPullToolSupport {
- /*
- * (non-Javadoc)
- * @see com.alibaba.service.pull.PullToolSupport#init()
- */
- @Override
- protected Object init() throws PullException {
- System.out.println("MyPullTool init.");
- return super.init();
- }
- private String username = "zhangsan";
- /**
- * @return the username
- */
- public String getUsername() {
- return username;
- }
- /**
- * @param username the username to set
- */
- public void setUsername(String username) {
- this.username = username;
- }
- }
步骤2:在webx.xml中配置
- <!-- 将beans暴露给模板。这里定义的tools可被所有components之间共享。 -->
- <services:pull xmlns="http://www.alibaba.com/schema/services/pull/factories">
- <utils />
- <page-tool />
- <control-tool />
- <uris-tool />
- <webx2-tool id="unicornTool"
- class="com.alibaba.intl.web.unicorn.pull.UnicornPullTool" scope="request" />
- <webx2-tool id="myPullTool" class="com.alibaba.sample.petstore.sample.pulltool.MyPullTool" scope="request"/>
- </services:pull>
步骤3:在页面中引用
- username: $myPullTool.username
本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/687288,如需转载请自行联系原作者