我的 spring MVC 项目和图块 3 面临几个问题,其中一个主要问题是列表属性。我想要做的是使用 来创建一个通用的瓷砖定义OptionsRenderer
,就像在最终视图文章中一样(文章中有一个错误,因为 lit 属性是在定义之外定义的,这是错误的)。${options[myoptions]}
当我使用表达式创建一些属性时,我总是IllegalStateException
在我的模板 JSP 中得到一个,因为缺少带有名称的列表属性myoptions
,即使我定义了这个列表属性。我的代码如下:
瓷砖.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.<tiles:importAttribute name="folder"/>
在我的 JSP 中使用。完全没有区别 2.<tiles:insertAttribute name="folder"/>
在我的JSP中使用。我遇到了一个异常,因为属性不是字符串。3.在JSP中定义属性<tiles:putListAttribute name="folder">FULL_DEFINITION_HERE</tiles:putListAttribute>
完全没有区别。
我已经参考了上面提到的文章,以及没有用的特别是OptionsRenderer 文档的平铺文档。谁能告诉我我在这里做错了什么?我相信这与spring MVC无关。