Spring Boot 2 index.html pas chargé automatiquement à partir de sous-répertoire mappé comme ressource statique

Dejan Mladenovski:

J'ai un module Maven contenant mon angulaire 6 application et à la construction , il est emballé dans un pot à META-INF/resources/admin/ui.

Mon application Spring Boot 2 a une dépendance au frontend et le module Maven lors de la construction , il inclut la bibliothèque frontend ainsi. Cependant, si j'accéder http://localhost:8080/admin/ui/il télécharge un fichier vide ui, mais si j'accède http://localhost:8080/admin/ui/index.htmlalors il affiche l'application angulaire.

Si j'empaquette l'application frontend à META-INF/resources/puis http://localhost:8080/affichera l'application angulaire correctement, mais je veux que le contexte de l'application frontend à partir /admin/ui. L'application Boot Spring n'a pas de correspondances personnalisées, il est tout simplement annotées avec

@Configuration
@EnableAutoConfiguration
@EnableScheduling
@ComponentScan(basePackageClasses = {...})
@Import({...})

Y at-il une propriété de configuration que je suis absent?

Je vous remercie de l'aide.

miiiii:

Vous n'avez pas besoin de toutes ces annotations pour faire fonctionner ... Je recommande s'il vous plaît supprimer ceux qui ne sont pas ajoutés volontairement par vous .. !!

Pour servir votre page statique sur le chemin différent de celui du principal contexte, voici un travail autour .. !!

Créer une autre classe simple contrôleur comme ci-dessous ..

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class Home {

    @RequestMapping(path = "/")
    public String getHome(){
        return "redirect:/admin/ui/"; 
      // make sure no space between colon (:) and endpoint name (/admin/ui)
    }

    @RequestMapping(path = "/admin/ui/" )
    public  String getAdminUi(){
        return "/index.html";
      // your index.html built by angular should be in resources/static folder
      // if it is in resources/static/dist/index.html,
      // change the return statement to "/dist/index.html"
    }

}

Et, remarquez ici, j'ai marqué la classe @Controllerpas @RestControllersi vous marquez à @RestControllerou d' essayer de faire la même chose dans tous les existants que @RestControllervous ne réaliserait pas facilement. Donc, il n'y a pas de mal à créer une autre classe comme ci - dessus.

Avantage de cette façon est, il ne détruit pas vos applications existantes .. également le chemin de contexte ne change, donc pas besoin de se soucier de vos autres chemins d'extrémité. Tous doivent travailler comme avant.

Espérons que cela a aidé !!

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=189723&siteId=1
conseillé
Classement