3

申し訳ありませんが、この質問をより適切に表現する方法がわかりません。

現在、メイン レイアウトで spring mvc "form" taglib アノテーション (およびその他のいくつか) を指定しています。

この場所にこれらの注釈を指定すると、このタイル定義を構成する他のページ フラグメントで同じ注釈を複製する必要がなくなると思います。

しかし、「本体」フラグメントは、そこで注釈を再指定した場合にのみ適切に機能するように「見える」ようです。

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

「mypage」(「masterpage」に基づく)のタイル定義は次のようになります

                 -
                 -
                 -
    <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 を再指定する必要があります (これらがないと、ページは正しく機能しません)。

    <%@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>
4

1 に答える 1