【问题标题】:Dynamic attributes with apache tiles 3带有 apache 瓦片的动态属性 3
【发布时间】:2014-09-16 00:32:08
【问题描述】:

我目前正在开发一个 Spring MVC 项目,并开始使用 apache tile 来呈现 JSP。今天,我正在处理将属性插入到 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>

我做错了什么?到目前为止我尝试过的东西来自其他答案,但错误仍然存​​在。提前致谢。

【问题讨论】:

  • 尝试cascade="true"editLink 属性。 tiles.apache.org/framework/tutorial/advanced/…
  • 现在它可以工作了!谢谢@BheshGurung
  • @BheshGurung,您能否创建一个答案以便我接受?谢谢。
  • 嗨@JorgeCespedes,你能告诉我如何启用 EL 对瓦片的支持 3。我正在使用 web.xml 来配置瓦片定义。

标签: java spring jsp tiles-3


【解决方案1】:

你需要级联属性(cascade="true")。

定义到定义中的属性可以级联以可用 到所有嵌套的定义和模板。例如样本 上面详述的定义可以这样重写:

阅读更多关于(级联)属性here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 2016-08-19
    • 2021-11-07
    • 1970-01-01
    相关资源
    最近更新 更多