Reputation: 41
Hi I am a newbie in Spring framework, In my application I need to integrate Spring with Tiles. How can I add viewResolver
for Tiles as well as internalViewResolver
for my login page, or how can I make it as one.I am using annotation based configuration. My login page location is
My config class is
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;
}
........//
}
where should I place my Tiles JSPs. I hope my question is clear, Please comment for additional information. Thanks!
Upvotes: 0
Views: 1772
Reputation: 2364
You should be using UrlBasedViewResolver
view resolver and not the InternalResourceViewResolver
since the suffix, view name and prefix would be specified in the Tiles Definition XML files.
@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;
}
And add in your Tiles Def XML file for each views like this:
For url path http://localhost:8080/register
:
@RequestMapping("/register")
Definition:
<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>
I have an example on Github for Spring Tiles but it is using XML Configuration, you can use above @Bean Configuration to make it use JavaConfig.
Upvotes: 2