带有通配符支持的嵌套平铺

时间:2015-01-30 05:50:31

标签: apache tiles-3

平铺配置:


<definition name="*/*/*/*/*/index" extends="defaultLayout.{1}.{2}.{4}">
    <put-attribute name="headerLocationPart" >
    <definition name="indexLocation"  template="/{1}/{2}/mkportal/s/layouts/LocationLayout.jsp">
        <put-attribute name="location" value="/{1}/{2}/mkportal/s/location.jsp" />
        <put-attribute name="subscriptionBtn" value="/{1}/{2}/mkportal/s/subscriptionBtn.jsp" />
        <put-attribute name="indexPromo" value="/{1}/{2}/mkportal/s/indexPromo.jsp" />
        </definition>
  </put-attribute>
    <put-attribute name="body" value="/{1}/{2}/mkportal/s/index.jsp" />
</definition>

当我要从浏览器点击网址时

  

http://localhost:8080/etisalat/wap/mkportal/s/index.wfv

问题是嵌套定义&#34; indexLocation&#34;无法解析{1},{2}参数。


错误


org.apache.tiles.impl.CannotRenderException: JSPException including path '/{1}/{2}/mkportal/s/layouts/LocationLayout.jsp'.

所以我需要解决方案来传递通配符值来解析嵌套的tile定义。

1 个答案:

答案 0 :(得分:3)

匿名定义不能包含通配符,因为它们没有名称。

这里有两种不同的方法 (我不知道哪个对你不对,因为我不确切知道你在做什么)

1) 您可以使用cascading =“true”属性而不是其他定义,如...

<definition name="*/*/*/*/*/index" extends="defaultLayout.{1}.{2}.{4}">
    <put-attribute name="headerLocationPart" template="/{1}/{2}/mkportal/s/layouts/LocationLayout.jsp"/>
    <put-attribute name="location" value="/{1}/{2}/mkportal/s/location.jsp" cascade="true"/>
    <put-attribute name="subscriptionBtn" value="/{1}/{2}/mkportal/s/subscriptionBtn.jsp" cascade="true"/>
    <put-attribute name="indexPromo" value="/{1}/{2}/mkportal/s/indexPromo.jsp" cascade="true"/>
    <put-attribute name="body" value="/{1}/{2}/mkportal/s/index.jsp" />
</definition>

2) 您可以使用命名定义,如...

    <definition name="indexLocation.*.*"  template="/{1}/{2}/mkportal/s/layouts/LocationLayout.jsp">
        <put-attribute name="location" value="/{1}/{2}/mkportal/s/location.jsp" />
        <put-attribute name="subscriptionBtn" value="/{1}/{2}/mkportal/s/subscriptionBtn.jsp" />
        <put-attribute name="indexPromo" value="/{1}/{2}/mkportal/s/indexPromo.jsp" />
    </definition>

<definition name="*/*/*/*/*/index" extends="defaultLayout.{1}.{2}.{4}">
    <put-attribute name="headerLocationPart" value="indexLocation.{1}.{2}"/>
    <put-attribute name="body" value="/{1}/{2}/mkportal/s/index.jsp" />
</definition>

参考:http://tiles.apache.org/framework/tutorial/advanced/nesting-extending.html