Spring-基于Tiles注解的配置
Spring-Tiles annotation based configuration
您好,我是 Spring 框架的新手,在我的应用程序中,我需要将 Spring 与 Tiles 集成。我如何为 Tiles 添加 viewResolver
以及为我的登录页面添加 internalViewResolver
,或者如何使它成为 one.I 我正在使用基于注释的配置。我的登录页面位置是
我的配置class是
public class AppConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
return messageSource;
}
........//
}
我应该在哪里放置我的 Tiles JSP。我希望我的问题很清楚,请发表评论以获取更多信息。谢谢!
您应该使用 UrlBasedViewResolver
视图解析器而不是 InternalResourceViewResolver
,因为后缀、视图名称和前缀将在 Tiles Definition XML 文件中指定。
@Bean
public UrlBasedViewResolver viewResolver() {
UrlBasedViewResolver viewResolver = new UrlBasedViewResolver();
viewResolver.setViewClass(TilesView.class);
return viewResolver;
}
@Bean
public TilesConfigurer tilesConfigurer() {
TilesConfigurer tilesConfigurer = new TilesConfigurer();
tilesConfigurer.setDefinitions(new String[]{
"/WEB-INF/defs/general.xml",
"/WEB-INF/defs/tiles.xml" //another definition
});
tilesConfigurer.setCheckRefresh(true);
return tilesConfigurer;
}
并为每个视图添加 Tiles Def XML 文件,如下所示:
对于url路径http://localhost:8080/register
:
@RequestMapping("/register")
定义:
<definition name="page" template="/WEB-INF/layout/page.jsp">
<put-list-attribute name="stylesheets">
<add-attribute value="/resources/css/AdminLTE.min.css" />
</put-list-attribute>
<put-list-attribute name="javascripts">
<add-attribute value="/resources/js/main.js" />
</put-list-attribute>
</definition>
<definition name="register" extends="page">
<put-attribute name="title" value="User Registeration" />
<put-attribute name="body" value="/WEB-INF/jsp/register.jsp" />
<put-attribute name="current" value="register" />
</definition>
我在 Github 上有一个用于 Spring Tiles 的示例,但它正在使用 XML 配置,您可以使用上面的 @Bean 配置使其使用 JavaConfig。
您好,我是 Spring 框架的新手,在我的应用程序中,我需要将 Spring 与 Tiles 集成。我如何为 Tiles 添加 viewResolver
以及为我的登录页面添加 internalViewResolver
,或者如何使它成为 one.I 我正在使用基于注释的配置。我的登录页面位置是
我的配置class是
public class AppConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
return messageSource;
}
........//
}
我应该在哪里放置我的 Tiles JSP。我希望我的问题很清楚,请发表评论以获取更多信息。谢谢!
您应该使用 UrlBasedViewResolver
视图解析器而不是 InternalResourceViewResolver
,因为后缀、视图名称和前缀将在 Tiles Definition XML 文件中指定。
@Bean
public UrlBasedViewResolver viewResolver() {
UrlBasedViewResolver viewResolver = new UrlBasedViewResolver();
viewResolver.setViewClass(TilesView.class);
return viewResolver;
}
@Bean
public TilesConfigurer tilesConfigurer() {
TilesConfigurer tilesConfigurer = new TilesConfigurer();
tilesConfigurer.setDefinitions(new String[]{
"/WEB-INF/defs/general.xml",
"/WEB-INF/defs/tiles.xml" //another definition
});
tilesConfigurer.setCheckRefresh(true);
return tilesConfigurer;
}
并为每个视图添加 Tiles Def XML 文件,如下所示:
对于url路径http://localhost:8080/register
:
@RequestMapping("/register")
定义:
<definition name="page" template="/WEB-INF/layout/page.jsp">
<put-list-attribute name="stylesheets">
<add-attribute value="/resources/css/AdminLTE.min.css" />
</put-list-attribute>
<put-list-attribute name="javascripts">
<add-attribute value="/resources/js/main.js" />
</put-list-attribute>
</definition>
<definition name="register" extends="page">
<put-attribute name="title" value="User Registeration" />
<put-attribute name="body" value="/WEB-INF/jsp/register.jsp" />
<put-attribute name="current" value="register" />
</definition>
我在 Github 上有一个用于 Spring Tiles 的示例,但它正在使用 XML 配置,您可以使用上面的 @Bean 配置使其使用 JavaConfig。