2017-05-29 12 views
5

मैं this tutorial के बाद स्प्रिंग बूट बैकएंड के साथ अपने एंगुलर 2 एप्लिकेशन को सफलतापूर्वक एकीकृत कर रहा हूं, संकलित जेएस संसाधनों को एक/ui उपनिर्देशिका में रखता हूं। सब कुछ मूल रूप से ठीक काम करता है, Angular2 एप्लिकेशन ऐपनाम/ui यूआरएल के माध्यम से सुलभ है।उसी सर्वर पर स्प्रिंग बूट + एंगुलर 2

हालांकि, मैं अगर वहाँ एक तरह से वसंत बताने के लिए 'पास-थ्रू' के लिए URL हैं, जो /ui पथ के बच्चों, के रूप में वर्तमान में अवरोध को लक्षित /ui/* हर अनुरोध वसंत का मौसम है जानना चाहते हैं , कोणीय 2 राउटर को /ui पथ के तहत संसाधनों के लिए उचित रूप से नेविगेट करने से रोकना।

वर्तमान में, मैं सिर्फ अपने नियंत्रकों में से एक में इस मानचित्रण है:

@RequestMapping(value = "/ui") 
public String uiIndex() { 
    return "/ui/index.html"; 
} 
इस के साथ

, इंटरफ़ेस को ठीक से /ui ऊपर दिखती है, लेकिन वसंत इसके तहत सब कुछ के लिए त्रुटियों और 404s मुझे भेजता है, जब मैं उन्हें सीधे ब्राउज़र से संबोधित करता हूं। Angular2 ऐप के अंदर राउटर नेविगेशन पूरी तरह से काम करता है।

संपादित

मैं इस config के साथ लक्ष्य/ui स्थिर/ui फ़ोल्डर में से संकलित Angular2 संसाधनों जोड़ रहा (अपने प्रोजेक्ट Maven निर्माण का उपयोग करता है):

 <resource> 
      <directory>${project.basedir}/src/main/resources</directory> 
      <includes> 
       <include>*.properties</include> 
       <include>templates/*.*</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>target/ui</directory> 
      <targetPath>static/ui</targetPath> 
     </resource> 

के रूप में स्पष्ट होना , एकमात्र समस्या यह है कि, जब मैं /ui/home/सेटिंग्स जैसे ब्राउज़र में एक यूआरएल दर्ज करता हूं, तो वसंत अनुरोध को रोकता है और त्रुटियों को फेंकता है। मैं खुशी से/ui, और उसके बाद कोणीय संदर्भ में/home/सेटिंग्स के लिए नेविगेट कर सकते हैं।

+0

स्प्रिंग बूट ऐप में स्थिर संसाधनों के लिए मानक स्थान src/main/resource/static के अंतर्गत है। बस अपने कोणीय संसाधनों को वहां रखें, और वसंत बूट उनकी सेवा करेगा। –

+0

आप एक मानचित्रण चाहते हैं जो '/ **' के साथ समाप्त होता है। – chrylis

+0

क्या आपने https://github.com/spring-guides/tut-spring-security-and-angular-js/blob/master/modular/README.adoc देखा है? – EpicPandaForce

उत्तर

1

कुछ परीक्षण-और-त्रुटि के बाद, अंततः मैं जो चाहता था उसे करने में कामयाब रहा। @EpicPandaforce के useful comment और this StackOverflow post

अंतिम समाधान करने के लिए बहुत-बहुत धन्यवाद एक @Controller इस तरह में एक @RequestMapping बनाने के लिए किया गया था:

@RequestMapping(value = "/ui/**/{[path:[^\\.]*}") 
public String redirectUi() { 
    return "forward:/ui/index.html"; 
} 
0

आप वसंत बूट में सेवा करने वाली स्थिर सामग्री को कॉन्फ़िगर करने के लिए संसाधन हैंडलर जोड़ सकते हैं।

उदाहरण

@Configuration 
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter { 
    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/ui").addResourceLocations("file:/path/to/your/angular/files"); 
    } 
} 

देखें https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-web-applications.html#boot-features-spring-mvc-static-content

अब, चरण ट्यूटोरियल आप का उल्लेख ऐसा करने का एक क्लीनर तरह, आप कि कदम को छोड़ किया गया है के 5? (src/main/resource/static)

+0

कृपया मेरा संपादित प्रश्न देखें, मुझे उम्मीद है कि यह थोड़ा स्पष्ट है, मेरी असली समस्या क्या है। :) – Sleeper9

0

मुझे लगता है कि सबसे आसान तरीका है कि आप क्या चाहते करने के लिए कोणीय हैश स्थान रणनीति का उपयोग कर।

import { LocationStrategy, HashLocationStrategy } from '@angular/common';

{ provide: LocationStrategy, useClass: HashLocationStrategy }

मैं मदद की उम्मीद है।