2012-03-30 20 views
6

BootStrap ile Spring 3, java tabanlı yapılandırmayı kullanıyorum.İlkbahar 3, Java tabanlı yapılandırma ve Kaynaklar erişim sorunu

Bootstrap'i indirdim ve css ve j'leri kaynak dizini altına yükledim.

Bu .cs'leri freemarker sayfasından kullanamadığım sorun. Onları nasıl içe aktardığımı. Ben java tabanlı yapılandırma kullanıyorum aşağıdaki gibidir , ben "addResourceHandler" ekledik:

WebAppConfig:

@Configuration 
@EnableWebMvc 
@ComponentScan("com.springway") 
public class WebConfig implements WebApplicationInitializer { 

    @Override 
    public void onStartup(final ServletContext servletContext) throws ServletException { 
     final AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); 
     root.setServletContext(servletContext); 
     root.scan("com.springway"); 
     root.refresh(); 

     final ServletRegistration.Dynamic servlet = servletContext.addServlet("spring", new DispatcherServlet(root)); 
     servlet.setLoadOnStartup(1); 
     servlet.addMapping("/*"); 
    } 

    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); 
    } 

Tomcat günlüğü diyor:

"UYARI: Hiçbir haritalama bulundu URI

ile HTTP isteği

[/springway/resources/css/bootstrap-responsive.css] yılında Dispatc herServlet adı 'bahar'

Dizin ile:

-SpringWay 
>  -src 
>   - main 
>     -webapp 
>       -resources 
          -WEB-INF 
           -welcome.ftl 
           -springway.ftl  

welcome.ftl:

[#ftl /] 
[#include "springway.ftl" /] 


<ul class="breadcrumb"> 
    <li> 
    <a href="[@spring.url '/test'/]">Test</a> <span class="divider">/</span> 
    </li> 
    <li> 
    <a href="#">Library</a> <span class="divider">/</span> 
    </li> 
    <li class="active">Data</li> 
</ul> 

springway.ftl:

[#ftl/] 
    [#import "spring.ftl" as spring /] 

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 

     <title> 

     </title> 

     <link href="[@spring.url '/resources/css/bootstrap-responsive.css'/]" rel="stylesheet" type="text/css" media="screen"/> 
     <link href="[@spring.url '/resources/css/bootstrap-responsive.min.css'/]" rel="stylesheet" type="text/css" media="screen"/> 
     <link href="[@spring.url '/resources/css/bootstrap.css'/]" rel="stylesheet" type="text/css" media="screen"/> 
     <link href="[@spring.url '/resources/css/bootstrap.min.css'/]" rel="stylesheet" type="text/css" media="screen"/> 

     <script src="[@spring.url '/resources/js/bootstrap.js'/]" type="text/javascript"></script> 
     <script src="[@spring.url '/resources/js/bootstrap.min.js'/]" type="text/javascript"></script> 
     </head> 

    <body ></body> 
    </html> 

cevap

9

Sen tanımladığınız yanlış resourceLocation . sizin css klasörü içindeki kaynaklar ekstra koymak gerekir klasörü olduğundan

yerine

registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); 

size **

registry.addResourceHandler("/resources/**").addResourceLocations("/resources/**"); 

yapmalıydım sonra/sonra o tespit edeceği css klasörü, aksi takdirde yalnızca alt klasörlerin göz önünde bulundurulmayacağı kaynak klasörlerinden yüklenir.

Umut sizin için yardımcı oldu.

Şerefe.

+0

Yardımlarınız için Japonya'ya teşekkürler. – Echo

1

Bahar Security kullanıyorsanız, size SecurityConfiguration Class bu kod satırı ekleyerek yetkili isteklerin listesine webjars eklemeyi düşünebilirsiniz: Bahar Security kullanıyorsanız

@Configuration 
@EnableWebMvcSecurity 
public class SecurityConfiguration extends WebSecurityConfigurerAdapter { 

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http 
    .authorizeRequests() 
    .antMatchers("/resources/**", "/signup", "/about").permitAll() 
    **.antMatchers("/webjars/**").permitAll()** 
    .anyRequest().authenticated() 
    .and() 
    .formLogin().loginPage("/signin").permitAll() 
    .and() 
    .logout().permitAll(); 
} 
2

, olabilir Bu satır satırını SecurityConfiguration Sınıfınıza ekleyerek yetkili isteklerin listesine eklemeyi düşünün:

İlgili konular