2017-12-08 65 views
6

मैं स्प्रिंग वेब पेजों के माध्यम से एनपीएम में निर्माण से परिणाम देना चाहता हूं और सब कुछ ठीक काम कर रहा है लेकिन मैं main.xxxx.yyy no जैसे नाम से संसाधनों की सेवा नहीं कर सका असली प्रत्यय क्या है (सीएसएस, जेएस या एचटीएमएल)।फ़ाइल नाम में डॉट (ओं) के साथ स्प्रिंग सेवारत सामग्री

निर्देशिका वृक्ष है कि तरह है:

src/main/resource/resource 
        index.html 
        asset-manifest.json 
        favicon.ico 
        manifest.json 
        service-worker.js 
        static 
        css 
         main.fc656101.css 
         main.fc656101.css.map 
        js 
         main.91794276.js 
         main.91794276.js.map 
        media 
         banner.bdcf92f4.jpg 
         fontawesome-webfont.912ec66d.svg 
         ... 

यह आवेदन वर्ग है:

@SpringBootApplication 
public class Application { 
    private static Logger log=Logger.getLogger(Application.class.getName()); 

@Bean 
WebMvcConfigurer configurer() { 
    return new WebMvcConfigurerAdapter() { 

     @Override 
     public void addResourceHandlers (ResourceHandlerRegistry registry) { 
      registry.addResourceHandler("/resources/static/*"). 
         addResourceLocations("classpath:/static/"); 
     } 
     @Override 
     public void configurePathMatch(PathMatchConfigurer configurer) { 
      super.configurePathMatch(configurer); 

      configurer.setUseSuffixPatternMatch(false); 
     } 
    }; 
} 

public static void main(String[] args) { 

    SpringApplication.run(Application.class, args); 
} 

मुद्दे को डीबग करने के लिए मैं मैन्युअल रूप से कुछ फ़ाइलों को नाम दिया गया है और यह काम करता है, तो मैं कर दिया है इस समस्या को उस फ़ाइल नामों में प्रतिबंधित किया गया है जिसमें डॉट (ओं) हैं।

मैंने देखा है कि किसी ने किसी भी समस्या को हल कर दिया है {variable:। +} RestControllers में अनुरोध मैपिंग में, लेकिन मेरे पास नियंत्रक नहीं हैं, इसलिए मैं यह नहीं समझ पाया कि इसे कैसे किया जाए।

संपादित करें:

मैं पाया है कि इस विन्यास के साथ:

@Configuration 
class ServletConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void configurePathMatch(final PathMatchConfigurer configurer) { 
     configurer.setUseSuffixPatternMatch(false); 
     configurer.setUseTrailingSlashMatch(false); 
    } 

    @Override 
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { 
     configurer.favorPathExtension(false); 
    } 

} 

अब यह सब * .html में कार्य करता है, page.01.html शामिल है, लेकिन अभी भी style.01.css नहीं या script.01.js। मुझे लगता है कि एक अलग समस्या है और मूल सामग्री ContentNegotiationConfigurer द्वारा हल की जाती है।

+0

यह टैग की गईं एनपीएम क्यों है? ऐसा लगता है कि node.js. के साथ कुछ भी नहीं है। –

+0

फ़ाइल नामों में बिंदुओं के साथ स्थिर सामग्री बनें एनपीएम रन बिल्ड कमांड द्वारा उत्पादित किया जाता है। – Marcoc1712

+0

मुझे नहीं लगता कि यह आपकी समस्या के लिए प्रासंगिक है, क्योंकि मुझे लगता है कि यदि आप उन फ़ाइलों को मैन्युअल रूप से बनाते हैं, तो ठीक है? और यदि नहीं, तो स्पष्ट रूप से उल्लेख करना एक महत्वपूर्ण बात है। –

उत्तर

1

मैंने लिखा यह एक बहुत ही बेवकूफ सवाल किया जाना चाहिए ...

समस्या ब्राउज़र का कैश और परियोजना सफाई था। हमेशा कैश साफ़ करना सुनिश्चित करें (यह काफी स्पष्ट है) लेकिन कॉन्फ़िगरेशन बदलने के बाद आप स्थिर सामग्री की सेवा करते हैं, जहां से परियोजना को साफ़ करें। रोको और जावा को पुनरारंभ करें नहीं है।

यह मेरे लिए तीन दिन खर्च किया गया लेकिन अब काम कर रहा है, और सही कॉन्फ़िगरेशन पहले मैंने पोस्ट किया है, सामग्री के लिए कोई आवश्यकता नहीं है वार्तालाप विन्यास।

आशा है कि यह दूसरों के लिए एक दिन बचा सकता है!

+0

आपने मेरा दिन धन्यवाद बचाया –

संबंधित मुद्दे