guilhermebhte 29 de ago. de 2017
Renan_Ramos598 30 de ago. de 2017
Fala @guilhermebhte
Cara, seria interessante se você postasse seu código só para darmos uma checada, mas vou encaminhar um trecho de um projeto meu.
Como você está utilizando configuração Java, é preciso ter uma classe que estenda a classe WebMvcConfigurerAdpater.
Segue link de um projeto meu (faz um tempinho que o fiz).
SGC
Você verá que existem métodos sobescritos que mapearão estes arquivos do seu sistema.
Flw!
guilhermebhte 30 de ago. de 2017
@Renan_Ramos598 , obrigado pelo retorno.
Vi alguns tópicos tentei, mas não adiantou.
Utilizo thymeleaf com spring
Minhas classes de configuração:
ThymeleafConfig
package br.com.netsoft.desif ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.context.ApplicationContext ;
import org.springframework.context.annotation.Bean ;
import org.springframework.context.annotation.Configuration ;
import org.springframework.web.servlet.ViewResolver ;
import org.thymeleaf.ITemplateEngine ;
import org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect ;
import org.thymeleaf.spring4.SpringTemplateEngine ;
import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver ;
import org.thymeleaf.spring4.view.ThymeleafViewResolver ;
import org.thymeleaf.templatemode.TemplateMode ;
import org.thymeleaf.templateresolver.ITemplateResolver ;
import nz.net.ultraq.thymeleaf.LayoutDialect ;
@Configuration
public class ThymeleafConfig {
@Autowired
private ApplicationContext applicationContext ;
@Bean
public ViewResolver thymeleafViewResolver ( ITemplateEngine templateEngine ) {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver ();
viewResolver . setTemplateEngine ( templateEngine );
viewResolver . setCharacterEncoding ( "UTF-8" );
return viewResolver ;
}
@Bean
public ITemplateEngine templateEngine ( ITemplateResolver templateResolver ) {
SpringTemplateEngine templateEngine = new SpringTemplateEngine ();
templateEngine . setTemplateResolver ( templateResolver );
templateEngine . setEnableSpringELCompiler ( true );
templateEngine . addDialect ( new LayoutDialect ());
templateEngine . addDialect ( new SpringSecurityDialect ());
return templateEngine ;
}
@Bean
public ITemplateResolver templateResolver () {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver ();
templateResolver . setApplicationContext ( this . applicationContext );
templateResolver . setTemplateMode ( TemplateMode . HTML );
templateResolver . setPrefix ( "/WEB-INF/views/" );
templateResolver . setSuffix ( ".html" );
templateResolver . setCharacterEncoding ( "UTF-8" );
templateResolver . setCacheable ( false );
return templateResolver ;
}
}
SpringWebInitializer
package br.com.netsoft.desif ;
import javax.servlet.ServletContext ;
import javax.servlet.ServletException ;
import javax.servlet.ServletRegistration ;
import org.springframework.web.WebApplicationInitializer ;
import org.springframework.web.context.ContextLoaderListener ;
import org.springframework.web.context.WebApplicationContext ;
import org.springframework.web.context.request.RequestContextListener ;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext ;
import org.springframework.web.servlet.DispatcherServlet ;
public class SpringWebInitializer implements WebApplicationInitializer {
@Override
public void onStartup ( ServletContext servletContext ) throws ServletException {
AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext ();
applicationContext . scan ( SpringWebInitializer . class . getPackage (). getName ());
servletContext . addListener ( new ContextLoaderListener ( applicationContext ));
servletContext . addListener ( new RequestContextListener ());
ServletRegistration . Dynamic dispatcher = servletContext . addServlet ( "dispatcher" , dispatcherServlet ( applicationContext ));
dispatcher . setAsyncSupported ( true );
dispatcher . setLoadOnStartup ( 1 );
dispatcher . addMapping ( "/" );
}
private DispatcherServlet dispatcherServlet ( WebApplicationContext applicationContext ) {
return new DispatcherServlet ( applicationContext );
}
}
JPAConfiguration
package br.com.netsoft.desif ;
import java.util.Properties ;
import javax.persistence.EntityManagerFactory ;
import org.springframework.context.annotation.Bean ;
import org.springframework.context.annotation.Configuration ;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories ;
import org.springframework.jdbc.datasource.DriverManagerDataSource ;
import org.springframework.orm.jpa.JpaTransactionManager ;
import org.springframework.orm.jpa.JpaVendorAdapter ;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean ;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter ;
import org.springframework.transaction.annotation.EnableTransactionManagement ;
@EnableJpaRepositories ( basePackageClasses = SpringWebInitializer . class )
@EnableTransactionManagement
@Configuration
public class JPAConfiguration {
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory () {
LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean ();
JpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter ();
factoryBean . setJpaVendorAdapter ( jpaVendorAdapter );
DriverManagerDataSource dataSource = new DriverManagerDataSource ();
dataSource . setUsername ( "postgres" );
dataSource . setPassword ( "63Netsis417" );
dataSource . setUrl ( "jdbc:postgresql://localhost:5432/desif" );
dataSource . setDriverClassName ( "org.postgresql.Driver" );
factoryBean . setDataSource ( dataSource );
Properties props = new Properties ();
props . setProperty ( "hibernate.dialect" , "org.hibernate.dialect.PostgreSQLDialect" );
props . setProperty ( "hibernate.show_sql" , "true" );
props . setProperty ( "hibernate.hbm2ddl.auto" , "none" );
factoryBean . setJpaProperties ( props );
factoryBean . setPackagesToScan ( "br.com.netsoft.desif" );
return factoryBean ;
}
@Bean
public JpaTransactionManager transactionManager ( EntityManagerFactory emf ) {
return new JpaTransactionManager ( emf );
}
}
AppWebConfiguration
package br.com.netsoft.desif ;
import org.springframework.context.MessageSource ;
import org.springframework.context.annotation.Bean ;
import org.springframework.context.annotation.ComponentScan ;
import org.springframework.context.support.ReloadableResourceBundleMessageSource ;
import org.springframework.format.datetime.DateFormatter ;
import org.springframework.format.datetime.DateFormatterRegistrar ;
import org.springframework.format.support.DefaultFormattingConversionService ;
import org.springframework.format.support.FormattingConversionService ;
import org.springframework.web.multipart.MultipartResolver ;
import org.springframework.web.multipart.support.StandardServletMultipartResolver ;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer ;
import org.springframework.web.servlet.config.annotation.EnableWebMvc ;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter ;
import org.springframework.web.servlet.view.InternalResourceViewResolver ;
import br.com.netsoft.desif.controller.HomeController ;
@EnableWebMvc
@ComponentScan ( basePackageClasses = { HomeController . class })
public class AppWebConfiguration extends WebMvcConfigurerAdapter {
@Bean
public InternalResourceViewResolver internalResourceViewResolver () {
InternalResourceViewResolver resolver = new InternalResourceViewResolver ();
resolver . setPrefix ( "/WEB-INF/views/" );
resolver . setSuffix ( ".html" );
return resolver ;
}
@Bean
public MessageSource messageSource () {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource ();
messageSource . setBasename ( "/WEB-INF/messages" );
messageSource . setDefaultEncoding ( "UTF-8" );
messageSource . setCacheSeconds ( 1 );
return messageSource ;
}
@Bean
public FormattingConversionService mvcConversionService () {
DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService ();
DateFormatterRegistrar registrar = new DateFormatterRegistrar ();
registrar . setFormatter ( new DateFormatter ( "dd/MM/yyyy" ));
registrar . registerFormatters ( conversionService );
return conversionService ;
}
@Bean
public MultipartResolver multipartResolver () {
return new StandardServletMultipartResolver ();
}
@Override
public void configureDefaultServletHandling ( DefaultServletHandlerConfigurer configurer ) {
configurer . enable ();
}
}
Renan_Ramos598 30 de ago. de 2017
@guilhermebhte
Não tenho muita experiência com Thymeleaf, mas tente adicionar este método no seu AppWebConfiguration.
@override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
Att
guilhermebhte 30 de ago. de 2017