Justin Maniyamprayil
Justin Maniyamprayil

Reputation: 41

Spring-Tiles annotation based configuration

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

enter image description here

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

Answers (1)

Sanjay Rawat
Sanjay Rawat

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

Related Questions