我使用struts2和spring框架创建了一个项目。现在我试图使用tiles框架分离我的动态内容。 布局由标题和正文组成。标题反过来包含Welcome xyz(已登录用户的名称),正文部分包含人员的表格列表,在启动时从我的数据库中填充。
<body>
<tiles:insertAttribute name="header"/>
<tiles:insertAttribute name="body"/>
</body>
<tiles-definitions>
<definition name="baseLayout" template="layout.jsp">
<put-attribute name="header" value="welcome.jsp"/>
<put-attribute name="body" value=""/>
</definition>
<definition name="addToListLayout" extends="baseLayout">
<put-attribute name="body" value="addEmployee.jsp"/>
</definition>
</tiles-definitions>
但是登录后我在jsp上得到以下输出: -
welcome.jsp addEmployee.jsp
任何人都可以告诉我为什么我得到jsp的名字而不是内容?
答案 0 :(得分:1)
问题在于tile不会将您的属性解释为模板,而是将它们解释为字符串。 来自tiles doc:
此标记可以灵活地用于将属性的值插入页面。与Tiles中的其他用法一样,每个属性都可以确定为具有“类型”,可以在定义时明确设置,也可以“计算”。如果类型不是显式的,那么如果属性值是有效定义,则它将被插入。 否则,如果以“/”字符开头,则会将其视为“模板”。最后,如果没有为其分配类型,它将被视为字符串并包含在内而没有任何特殊处理。
因此,您可以将tiles.xml中的标记更改为:
<put-attribute name="header" value="/welcome.jsp"/>
或者这个:
<put-attribute name="header" type="template" value="welcome.jsp"/>