1

私は現在、Spring MVC プロジェクトに取り組んでおり、JSP のレンダリングに Apache タイルの使用を開始しました。今日は、コントローラーから返された値を使用して、jsp ページに属性を挿入する問題に取り組んでいます。

これは tiles.xml での私の基本定義です。

<definition name="base.definition"
    template="/WEB-INF/views/layout.jsp">
    <put-attribute name="title" value="" />
    <put-attribute name="header" value="/WEB-INF/views/header.jsp" />
    <put-attribute name="menu" value="/WEB-INF/views/menuV2.jsp" />
    <put-attribute name="content" value="" />
    <put-attribute name="panelTable" value="" />
    <put-attribute name="footer" value="/WEB-INF/views/footer.jsp" />
</definition>

次に、次のように基本定義を拡張します。

<definition name="viewpublication" extends="base.definition">
    <put-attribute name="title" value="publicationview.title"></put-attribute>
    <put-attribute name="content" value="/WEB-INF/views/publication/viewpublication.jsp"></put-attribute>
    <put-attribute name="panelTable" value="/WEB-INF/views/publication/leftpanel.jsp"></put-attribute>
    <put-attribute name="editLink" expression="${ model.editLink }"></put-attribute>
    <put-list-attribute name="scripts">
    </put-list-attribute>
    <put-list-attribute name="styles">

    </put-list-attribute>
</definition>

ご覧のとおり、別の属性 (panelTable) 内に属性を挿入しようとしていますが、コントローラーによって返されます。

model.setAmIOwner(getUserId() == model.getPublicationOwnerId());
model.setEditLink(request.getContextPath() + "/publication/edit/" + pubService.getPublicationId() + "/" + sessionData.getAgentId());
return new ModelAndView("viewpublication", "publication", model);

これはスローされる例外です:

org.apache.tiles.template.NoSuchAttributeException: Error importing attributes. Attribute 'editLink' is null

これは leftpanel.jsp です

<tilesx:useAttribute name="editLink" id="editLink" classname="java.lang.String" />
<li class="list-group-item" id="firstRow"><span class="edit"><a href="${ editLink }"><fmt:message key="publicationview.panelEditPublication"></fmt:message></a></span></li>

私は何を間違っていますか?これまでに試したことは他の回答からのものですが、エラーは残ります。前もって感謝します。

4

1 に答える 1