Java 如何更改Apache Tiles中tile求值的顺序?
我有一个问题,嵌套模板在父模板之前进行求值。由于排序问题,这会导致坚持嵌套的标记库出现问题 template.jspJava 如何更改Apache Tiles中tile求值的顺序?,java,jsp,tiles,apache-tiles,Java,Jsp,Tiles,Apache Tiles,我有一个问题,嵌套模板在父模板之前进行求值。由于排序问题,这会导致坚持嵌套的标记库出现问题 template.jsp <%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%> <%@taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> <%@taglib uri="http://
<%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<%@taglib uri="http://taglibs.com/tags" prefix="s"%>
<%System.out.println("evaluating template.jsp");%>
<s:outer>
<tiles:insertAttribute name="content" />
</s:outer>
content.jsp
页面失败,因为内部
标记必须位于外部
标记内。如何让Tiles在对template.jsp
求值后对content.jsp
求值?我可能错了,但我认为Tiles需要解析整个jsp,这意味着不能按照它的布局来做。当前布局来自一个目标JSP,该JSP随后在内部使用一个模板。我们可以使用tiles定义来指定模板作为填充内容的目标。我认为这种方法可以让您更有效地使用tiles继承,并且可以解决这个问题,因为“模板”将首先呈现,而不是第二次呈现
例如:
tiles.xml
<tiles-definitions>
<definition name="myTemplate" template="/WEB-INF/jsf/template.jsp">
<put-attribute name="content" value="" />
</definition>
<definition name="content" extends="myTemplate">
<put-attribute name="content" value="content.jsp" />
</definition>
</tiles-definitions>
现在您必须指定一个tiles定义作为结果类型。。。如果您使用的是struts2,我会告诉您,但所有框架都可能不是您的
您的模板jsp将保持不变。
您的内容jsp将被重写如下:
<%@taglib uri="http://taglibs.com/tags" prefix="s"%>
<%System.out.println("evaluating content.jsp");%>
<s:inner />
注意,现在不需要在页面中混合任何平铺逻辑。内容就是这样。您会注意到tiles.xml文件比我实际需要的更复杂,但我想说明的是,在我们的示例中,我们只有一个“put属性”,但在更复杂的页面中,您可以有许多,因此“myTemplate”将生成一个页面,其中不仅包含内容,还包含页眉、页脚和边栏,甚至可能包含页眉,这样您就可以更改页面上的脚本和CSS,然后您只需按照给定的示例进行扩展,然后只更改您想要的部分(通常只是内容),进一步扩展该定义。。。基本布局->安全布局扩展基本布局,但可能会更改标题以包含锁定图标->查看用户\u在\u安全布局扩展安全布局中更改查看用户功能的内容。我可能错了,但我认为Tiles需要解析整个JSP,这意味着您不能按其布局方式进行操作。当前布局来自一个目标JSP,该JSP随后在内部使用一个模板。我们可以使用tiles定义来指定模板作为填充内容的目标。我认为这种方法可以让您更有效地使用tiles继承,并且可以解决这个问题,因为“模板”将首先呈现,而不是第二次呈现 例如: tiles.xml
<tiles-definitions>
<definition name="myTemplate" template="/WEB-INF/jsf/template.jsp">
<put-attribute name="content" value="" />
</definition>
<definition name="content" extends="myTemplate">
<put-attribute name="content" value="content.jsp" />
</definition>
</tiles-definitions>
现在您必须指定一个tiles定义作为结果类型。。。如果您使用的是struts2,我会告诉您,但所有框架都可能不是您的
您的模板jsp将保持不变。
您的内容jsp将被重写如下:
<%@taglib uri="http://taglibs.com/tags" prefix="s"%>
<%System.out.println("evaluating content.jsp");%>
<s:inner />
注意,现在不需要在页面中混合任何平铺逻辑。内容就是这样。您会注意到tiles.xml文件比我实际需要的更复杂,但我想说明的是,在我们的示例中,我们只有一个“put属性”,但在更复杂的页面中,您可以有许多,因此“myTemplate”将生成一个页面,其中不仅包含内容,还包含页眉、页脚和边栏,甚至可能包含页眉,这样您就可以更改页面上的脚本和CSS,然后您只需按照给定的示例进行扩展,然后只更改您想要的部分(通常只是内容),进一步扩展该定义。。。基本布局->安全布局扩展基本布局,但可能会更改标题以包含锁定图标->查看用户\u在\u安全布局扩展安全布局中更改查看用户功能的内容。我使用Tiles遇到的问题是,我希望所有页面内容都在一个JSP页面内-html标题内容,页面特定css,菜单和内容。看来瓷砖不会像我想的那样工作。谢谢你的输入!我在Tiles中遇到的问题是,我希望所有页面内容都在一个JSP页面中—html标题内容、特定于页面的css、菜单和内容。看来瓷砖不会像我想的那样工作。谢谢你的输入!