Tiles 模板有时未加载
Tiles template sometimes not loaded
我们在 Spring MVC 应用程序中使用 Tiles 3。有时(每第 5 个或第 10 个服务器启动)模板未加载。仅显示 .jsp 页面,没有页眉和页脚。你有什么建议吗?
Spring配置
@Bean
public InternalResourceViewResolver getInternalResourceViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix(JSP_PREFIX);
resolver.setSuffix(JSP_SUFFIX);
return resolver;
}
@Bean
public TilesConfigurer tilesConfigurer() {
TilesConfigurer tilesConfigurer = new TilesConfigurer();
String[] defintions = new String[] { TILES_DEF };
tilesConfigurer.setDefinitions(defintions);
return tilesConfigurer;
}
@Bean
public ViewResolver viewResolver() {
TilesViewResolver viewResolver = new TilesViewResolver();
viewResolver.setCacheUnresolved(false);
return viewResolver;
}
瓷砖-definition.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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=".mainTemplate" template="/WEB-INF/jsp/fragments/template.jsp">
<put-attribute name="header" value="/WEB-INF/jsp/fragments/header.jsp" />
<put-attribute name="body" value="/WEB-INF/jsp/fragments/body.jsp" />
<put-attribute name="footer" value="/WEB-INF/jsp/fragments/footer.jsp" />
</definition>
<definition name="vermittlerUebersicht" extends=".mainTemplate">
<put-attribute name="body" value="/WEB-INF/jsp/vermittlerUebersicht.jsp" />
</definition>
</tiles-definitions>
还有 template.jsp
<!DOCTYPE html>
<%@ page pageEncoding="UTF-8" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<tiles:insertAttribute name="header" />
<tiles:insertAttribute name="body" />
<tiles:insertAttribute name="footer" />
谢谢帮助!
我找到了解决办法!我在 spring 配置中有 2 个视图解析器。因此,无法确定首先从哪个视图解析器处理请求。我必须设置视图解析器的顺序。 InternalResourceViewResolver 必须具有最低优先级(==高顺序号)。
我们在 Spring MVC 应用程序中使用 Tiles 3。有时(每第 5 个或第 10 个服务器启动)模板未加载。仅显示 .jsp 页面,没有页眉和页脚。你有什么建议吗?
Spring配置
@Bean
public InternalResourceViewResolver getInternalResourceViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix(JSP_PREFIX);
resolver.setSuffix(JSP_SUFFIX);
return resolver;
}
@Bean
public TilesConfigurer tilesConfigurer() {
TilesConfigurer tilesConfigurer = new TilesConfigurer();
String[] defintions = new String[] { TILES_DEF };
tilesConfigurer.setDefinitions(defintions);
return tilesConfigurer;
}
@Bean
public ViewResolver viewResolver() {
TilesViewResolver viewResolver = new TilesViewResolver();
viewResolver.setCacheUnresolved(false);
return viewResolver;
}
瓷砖-definition.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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=".mainTemplate" template="/WEB-INF/jsp/fragments/template.jsp">
<put-attribute name="header" value="/WEB-INF/jsp/fragments/header.jsp" />
<put-attribute name="body" value="/WEB-INF/jsp/fragments/body.jsp" />
<put-attribute name="footer" value="/WEB-INF/jsp/fragments/footer.jsp" />
</definition>
<definition name="vermittlerUebersicht" extends=".mainTemplate">
<put-attribute name="body" value="/WEB-INF/jsp/vermittlerUebersicht.jsp" />
</definition>
</tiles-definitions>
还有 template.jsp
<!DOCTYPE html>
<%@ page pageEncoding="UTF-8" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<tiles:insertAttribute name="header" />
<tiles:insertAttribute name="body" />
<tiles:insertAttribute name="footer" />
谢谢帮助!
我找到了解决办法!我在 spring 配置中有 2 个视图解析器。因此,无法确定首先从哪个视图解析器处理请求。我必须设置视图解析器的顺序。 InternalResourceViewResolver 必须具有最低优先级(==高顺序号)。