gpt4 book ai didi

java - 为什么我必须在我的 Tiles 子页面片段中重新指定 taglib 注释? (已经在我的 masterlayout.jsp 中指定了)

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:48:36 24 4
gpt4 key购买 nike

抱歉,我不知道如何更好地表达这个问题。

目前,我正在我的主布局中指定 spring mvc“form”taglib 注释(以及其他一些注释)。

我希望在此位置指定这些注释将消除在包含此 tile 定义的其他页面片段中复制相同注释的需要。

但是,如果我在那里重新指定注释,我的“正文”片段似乎“似乎”正常工作。

    e.g., 
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
-
-
-

“mypage”(基于“masterpage”)的图 block 定义如下所示

                 -
-
-
<definition name="masterpage" template="/WEB-INF/views/masterlayout.jsp">
<put-attribute name="title" value="" type="string"/>
<put-attribute name="header" value="" />
<put-attribute name="leftside" value="" />
<put-attribute name="rightside" value="" />
<put-attribute name="footer" value="" />
</definition>

<definition name="mypage" extends="masterpage">
<put-attribute name="title" value="My Page Title" type="string"/>
<put-attribute name="header" value="/WEB-INF/views/header.jsp" />
<put-attribute name="leftside" value="/WEB-INF/views/leftside.jsp" />
<put-attribute name="rightside" value="/WEB-INF/views/rightside.jsp"/>
<put-attribute name="footer" value="/WEB-INF/views/footer.jsp" />
</definition>
-
-
-

这是 masterlayout.jsp 的样子

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>blah blah blah</title>
<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/resources/mypage.css" />
</head>
<body>
<div>
<div>
<div id="headerdiv">
<tiles:insertAttribute name="header" />
</div>
<div id="middle">
<div>
<tiles:insertAttribute name="leftside" />
<tiles:insertAttribute name="rightside" />
</div>
</div>
<div id="footerdiv">
<tiles:insertAttribute name="footer" />
</div>
</div>
</div>
</body>
</html>

这是 rightside.jsp 页面片段 - 我目前必须在其中重新指定标签库(没有这些,页面无法正常工作)

    <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>

<div style="min-height: 550px;">
<div>
<form:form id="form1" modelAttribute="myViewBean" method="post" action="saveForm.html">
<form:errors path="errorMsg" cssClass="error" element="div" />
<div class="clear"></div>

<div>
<div class="label">
<form:label path="email">Email:<em>*</em></form:label>
</div>
<div>
<form:input path="email" size="40" maxlength="256" />
<form:errors path="email" cssClass="error" />
</div>
<div class="clear"></div>
</div>
</form:form>
</div>
</div>

最佳答案

因为每个 JSP 都相互独立。 Tiles 在幕后使用动态包含。

像 Tiles 这样的模板引擎的全部意义在于能够在多个布局中使用相同的组件,以及在同一布局中使用多个组件。让组件的代码取决于它所包含的布局并不是一个好主意。

关于java - 为什么我必须在我的 Tiles 子页面片段中重新指定 taglib 注释? (已经在我的 masterlayout.jsp 中指定了),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17980863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com