找不到left,right是因为你的以下布局里没有这两个属性。
/layouts/baseLayout.jsp这些是对的,其他都错。
-----------------------------------------------
<definition name=".baseLayout" path="/layouts/baseLayout.jsp">
<put name="header" path="/common/header.jsp">
<put name="footer" path="/common/header.jsp">
<put name="content">
</definition>
<definition name=".simple" path="/common/simple.jsp">
<put name="content" path="/common/simple.jsp">
</definition>
<definition name=".leftRight" path="/common/leftRight.jsp">
<put name="left">
<put name="right">
</definition><definition name=".baseLeftRight" extends=".baseLayout">
<put name="content" path=".leftRight">
</definition>你试试转发到.baseLeftRight,应该可以。这个应该是一个对left,right的布局
/common/leftRight.jsp这是错的,.baseLayout布局里没有left属性,怎么能找到。其他类似
----------------------------------------
<definition name=".base1" extends=".baseLayout">
<put name="left" path="/base1/left.jsp">
</definition>如果想定义left,应该扩展.leftRight,它才有left属性
-----------------------------------------
<definition name=".base1" extends=".leftRight">
<put name="left" path="/base1/left.jsp">
</definition>
/layouts/baseLayout.jsp这些是对的,其他都错。
-----------------------------------------------
<definition name=".baseLayout" path="/layouts/baseLayout.jsp">
<put name="header" path="/common/header.jsp">
<put name="footer" path="/common/header.jsp">
<put name="content">
</definition>
<definition name=".simple" path="/common/simple.jsp">
<put name="content" path="/common/simple.jsp">
</definition>
<definition name=".leftRight" path="/common/leftRight.jsp">
<put name="left">
<put name="right">
</definition><definition name=".baseLeftRight" extends=".baseLayout">
<put name="content" path=".leftRight">
</definition>你试试转发到.baseLeftRight,应该可以。这个应该是一个对left,right的布局
/common/leftRight.jsp这是错的,.baseLayout布局里没有left属性,怎么能找到。其他类似
----------------------------------------
<definition name=".base1" extends=".baseLayout">
<put name="left" path="/base1/left.jsp">
</definition>如果想定义left,应该扩展.leftRight,它才有left属性
-----------------------------------------
<definition name=".base1" extends=".leftRight">
<put name="left" path="/base1/left.jsp">
</definition>
如下定义,固然是可以的:
definition name=".base1" extends=".leftRight">
<put name="left" path="/base1/left.jsp">
</definition>
但这样就丢失了.baseLayout定义的元素。事实上,.leftRight只是一个局部定义。注意,我并不想在/common/leftRight.jsp中重复一遍/layouts/baseLayout.jsp的代码。
<definition name=".simple" extends=".baseLayout">
<put name="content" path="/common/simple.jsp">
</definition>
如果你想做一个左右分割的布局,这样做。比如第一个程序:<definition name=".myLeftRightLayout1" extends=".baseLayout">
<put name="content" path=".myLeftRight1">
</definition><definition name=".myLeftRight1" extends=".leftRight">
<put name="left" path="left.jsp">
<put name="right" path="right.jsp">
</definition>之后转发就发给.myLeftRightLayout1第二个程序:
<definition name=".myLeftRightLayout2" extends=".baseLayout">
<put name="content" path=".myLeftRight2">
</definition><definition name=".myLeftRight2" extends=".leftRight">
<put name="left" path="left.jsp">
<put name="right" path="right.jsp">
</definition>之后转发就发给.myLeftRightLayout2
判断是否right这个属性被设置值
比如right的布局。先import这些属性,例如:right,主意加ignore="true",意思是right可以不要。
<tiles:importAttribute name="right" ignore="true"/>之后再布局里使用logic:present来判断是否存在。
<logic:present name="right">
<td valign="top" align="left">
<tiles:insert attribute="right" ignore="true"/>
</td>
</logic:present>
------------------------------
之后每增加一个页面就定义一个definition 就行。也就是baseLayout其实已经有了。<definition name=".myLeftRightLayout1" extends=".baseLayout">
<put name="right" path="right.jsp">
<put name="left" path="left.jsp">
</definition>
期待它改进罗.
或者你再研究tile的文档