1.uris.xml
(1)最简单的uris.xml
<services:uris>
<uri id="server" requestAware="true" />
<turbine-uri id="app1Link" exposed="true" extends="server">
<componentPath>/</componentPath>
</turbine-uri>
<turbine-uri id="myLink" exposed="true" extends="app1Link">
<componentPath>/index</componentPath>
</turbine-uri>
<turbine-content-uri id="app1Content" exposed="true" extends="app1Link" />
</services:uris>
其中的extends属性相当于java中的继承,myLink继承了app1Link,app1Link继承了server,server实际上代表的事服务器的地址和端口,所以组合起来就是
http://localhost:8081/index
这样的话不管是在代码还是vm中,都可以直接使用了。
但是注意:只有exposed="true"才能在代码和vm中使用,如果是false则不能使用,只能起到继承作用
(2)稍复杂的uris.xml
<!-- ================================================================ -->
<!-- Server Level: java server。 -->
<!-- -->
<!-- 使用方法: 不能直接使用,只被其它URI继承。 -->
<!-- ================================================================ -->
<uri id="petstoreServer" />
<!-- ================================================================ -->
<!-- Component Level: webx modules。 -->
<!-- -->
<!-- 使用方法: link.setTarget('target.jhtml') -->
<!-- .addQueryData('name', 'value') -->
<!-- ================================================================ -->
<!-- admin -->
<!--<componentPath>指向的是admin.car的URL-->
<turbine-uri id="adminModule" exposed="true" extends="petstoreServer">
<componentPath>/admin</componentPath>
</turbine-uri>
<!--指向admin.car中的图片、静态内容和URL-->
<turbine-content-uri id="adminContent" exposed="true" extends="adminModule" />
<!-- user -->
<turbine-uri id="userModule" exposed="true" extends="petstoreServer">
<componentPath>/user</componentPath>
</turbine-uri>
<turbine-content-uri id="userContent" exposed="true" extends="userModule" />
<!-- ================================================================ -->
<!-- Link Level: 继承前述各类links。 -->
<!-- -->
<!-- 使用方法: link -->
<!-- ================================================================ -->
<!--指向user.car中的各个页面-->
<turbine-uri id="petstoreLoginLink" exposed="true" extends="userModule">
<target>login.vm</target>
</turbine-uri>
<turbine-uri id="petstoreLogoutLink" exposed="true" extends="userModule">
<target>login.vm</target>
<query key="action">loginAction</query>
<query key="eventSubmitDoLogout">yes</query>
</turbine-uri>
<turbine-uri id="petstoreRegisterLink" exposed="true" extends="userModule">
<target>register.vm</target>
</turbine-uri>
<turbine-uri id="petstoreRegisterAccountLink" exposed="true" extends="userModule">
<target>registerAccount.vm</target>
</turbine-uri>
<turbine-uri id="petstoreAccountLink" exposed="true" extends="userModule">
<target>account.vm</target>
</turbine-uri>
</services:uris>
可以看出实际上可以多级继承,然后直接使用即可。
$userModule.setTarget("account/edit.vm") 生成结果: http://localhost:8081/petstore/user/account/edit.htm
$userContent.setContentPath("images/my.gif") 生成结果:http://localhost:8081/petstore/user/images/my.gif
$petstoreLoginLink 生成结果:http://localhost:8081/petstore/user/login.htm
2.使用
(1)在uris.xml中完全配置到目标target,如:
<turbine-uri id="petstoreRegisterLink" exposed="true" extends="userModule">
<target>register.vm</target>
</turbine-uri>
这样的话在代码中直接写就好了
$petstoreRegisterLink
(2)配置到一定程度,再设置target即可
<turbine-uri id="userModule" exposed="true" extends="petstoreServer">
<componentPath>/user</componentPath>
</turbine-uri>
在代码中设置target
$userModule.setTarget("register.vm")