【发布时间】:2013-01-28 10:34:41
【问题描述】:
我的 spring MVC 项目和图块 3 遇到了几个问题,其中一个主要问题是列表属性。我要做的是使用OptionsRenderer 创建一个通用的tile 定义,就像the ultimate view article 一样(文章中有一个错误,因为 lit 属性是在定义之外定义的,这是错误的)。当我使用${options[myoptions]} 表达式创建一些属性时,我总是在我的模板JSP 中得到IllegalStateException,因为缺少名称为myoptions 的列表属性,即使我定义了这个列表属性。我的代码如下:
tiles.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="WILDCARD:*/*" template="/WEB-INF/view/template.jsp">
<put-attribute name="meta" value="/WEB-INF/view/${options[folder]}/meta.jsp" />
<put-attribute name="header" value="/WEB-INF/view/${options[folder]}/header.jsp" />
<put-attribute name="body" value="/WEB-INF/view/${options[folder]}/{2}.jsp" />
<put-attribute name="footer" value="/WEB-INF/view/${options[folder]}/footer.jsp" />
<put-list-attribute name="folder">
<add-list-attribute>
<add-attribute value="{1}" />
<add-attribute value="common" />
</add-list-attribute>
</put-list-attribute>
</definition>
</tiles-definitions>
模板.jsp
<%@ page language="java" pageEncoding="UTF-8"
contentType="text/html; charset=utf-8" trimDirectiveWhitespaces="true"%>
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<title>${dynamicTitle} - <fmt:message key="common.siteName" /></title>
<tiles:insertAttribute name="meta" />
</head>
<body>
<div id="header">
<tiles:insertAttribute name="header" />
</div>
<div id="body">
<tiles:insertAttribute name="body" />
</div>
<div id="footer">
<tiles:insertAttribute name="footer" />
</div>
</body>
</html>
我尝试了几种解决方案都没有结果。我的试验如下:
1. 在我的 JSP 中使用<tiles:importAttribute name="folder"/>。完全没有区别
2. 在我的 JSP 中使用<tiles:insertAttribute name="folder"/>。我遇到了一个异常,因为属性不是字符串。
3.在JSP中使用<tiles:putListAttribute name="folder">FULL_DEFINITION_HERE</tiles:putListAttribute>定义属性完全没有区别。
我已经参考了上面提到的文章,tiles documentation 特别是OptionsRenderer documentation 没有用。谁能告诉我我在这里做错了什么?我相信这与spring MVC无关。
【问题讨论】:
标签: spring spring-mvc tiles