J'ai utilisé maven pour faire le tutoriel https://spring.io/guides/gs/uploading-files/
Tous les codes que j'ai utilisés ont été copiés.
L'application peut s'exécuter, mais j'obtiens l'erreur:
Page d'erreur Whitelabel Cette application n'a pas de mappage explicite pour / error, vous voyez donc cela comme une solution de secours. Tue Jun 30 17:24:02 CST 2015 Une erreur inattendue s'est produite (type = Not Found, status = 404). Aucun message disponible
Comment puis-je y remédier?
spring
spring-mvc
file-upload
upload
Deng Steve
la source
la source
Réponses:
Assurez-vous que votre classe principale est dans un package racine au-dessus des autres classes.
Lorsque vous exécutez une application Spring Boot, (c'est-à-dire une classe annotée avec @SpringBootApplication), Spring analysera uniquement les classes sous votre package de classe principal.
la source
Lorsque nous créons une application Spring Boot, nous l'annotons avec une
@SpringBootApplication
annotation. Cette annotation «termine» de nombreuses autres annotations nécessaires au fonctionnement de l'application. L'une de ces annotations est l'@ComponentScan
annotation. Cette annotation indique à Spring de rechercher les composants Spring et de configurer l'application pour qu'elle s'exécute.Votre classe d'application doit être au sommet de votre hiérarchie de packages, afin que Spring puisse analyser les sous-packages et découvrir les autres composants requis.
L'extrait de code ci-dessous fonctionne car le package du contrôleur est sous
com.test.spring.boot
packageL'extrait de code ci-dessous ne fonctionne PAS car le package du contrôleur n'est PAS sous
com.test.spring.boot
packageÀ partir de la documentation de Spring Boot:
la source
Vous pouvez résoudre ce problème en ajoutant un
ErrorController
dans votre application. Vous pouvez demander au contrôleur d'erreur de renvoyer une vue dont vous avez besoin.Le contrôleur d'erreur dans mon application ressemble à ci-dessous:
La classe ci-dessus est basée sur la classe Springs BasicErrorController .
Vous pouvez instancier ce qui précède
ErrorController
comme ceci dans un@Configuration
fichier:Vous pouvez choisir de remplacer la valeur
ErrorAttributes
par défaut en implémentant ErrorAttributes . Mais dans la plupart des cas, DefaultErrorAttributes devrait suffire.la source
BasicErrorController
classe 404.BasicErrorController
n'est plus bon, pouvez-vous mettre à jour?BasicErrorController
est maintenant corrigé.Dans mon cas, la classe de contrôleur était annotée avec
@Controller
. Changer cela pour@RestController
résoudre le problème. Fondamentalement,@RestController
c'est@Controller + @ResponseBody
donc soit utiliser@RestController
, soit@Controller
avec une@ResponseBody
annotation avec chaque méthode.Quelques notes utiles ici: https://www.genuitec.com/spring-frameworkrestcontroller-vs-controller/
la source
@RestController
elle , vous ajoutez implicitement l'@ResponseBody
annotation, mais si vous utilisez l'@Controller
annotation, vous devez ajouter explicitement cette annotation vous-même.dans mon cas, c'est à cause de la position du package, ce qui signifie que le package du contrôleur doit être au-dessus du package de classe principale
si mon package de classe principale est
package co.companyname.spring.tutorial;
un package de contrôleur devraitpackage co.companyname.spring.tutorial.WHAT_EVER_HERE;
après avoir terminé le codage, appuyez sur le tableau de bord de démarrage
une dernière chose pour vous assurer que votre contrôleur est mappé ou pas seulement la console, vous devriez voir quelque chose de smilliar
bon codage
la source
Essayez d'ajouter la dépendance.
la source
Cela se produit lorsqu'une page d'erreur explicite n'est pas définie. Pour définir une page d'erreur, créez un mappage de / error avec une vue. Par exemple, le code ci-dessous correspond à une valeur de chaîne renvoyée en cas d'erreur.
la source
J'ai ajouté cette dépendance et cela a résolu mon problème.
la source
Je développe l'application Spring Boot depuis quelques semaines .. Et j'ai eu la même erreur que ci-dessous;
Lorsque j'obtiens ce massage d'erreur, j'ai réalisé que ma classe de contrôleur ou de contrôleur de repos était définie dans mon projet. Je veux dire que tous nos packages de contrôleur ne sont pas le même package avec la classe principale qui inclut l'annotation @SpringBootApplication .. Je veux dire que vous devez ajouter le nom de votre package de contrôleur à l'annotation @ComponentScan à votre classe principale qui comprend l'annotation @SpringBootApplication. ci-dessous, votre problème sera résolu ... La chose la plus importante est que vous devez ajouter le package de votre contrôleur à l'annotation @ComponentScan comme je l'ai fait ci-dessous
J'espère que ces codes vont aider quelqu'un ...
Si vous trouvez un autre moyen de résoudre cette erreur ou si vous avez des suggestions à me faire, veuillez écrire aux commentaires ... merci ...
la source
Dans la classe principale, après la configuration "@SpringBootApplication", ajouter "@ComponentScan" sans avoir d'arguments, a fonctionné pour moi !!!
Classe principale:
Classe RestController:
PS: Ne manquez pas d'exécuter les commandes mvn clean et mvn install, avant de lancer l'application
la source
Assez tard à la fête. Selon la documentation officielle du printemps, "Spring Boot installe une page d'erreur de marque blanche que vous voyez dans un navigateur client si vous rencontrez une erreur de serveur." https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-customize-the-whitelabel-error-page
server.error.whitelabel.enabled=false
dans le fichier application.yml ou application.properties .2. La méthode recommandée est de définir votre page d'erreur afin que l'utilisateur final puisse comprendre. Sous le dossier resources / templates , créez un fichier error.html et ajoutez une dépendance dans le fichier pom.xml
Spring choisira automatiquement la page error.html comme modèle d'erreur par défaut. Remarque: - N'oubliez pas de mettre à jour le projet maven après avoir ajouté une dépendance.
la source
Vous obtenez peut-être l'erreur ie
"Cette application n'a pas de mappage explicite pour / error, vous voyez donc cela comme une solution de secours."
C'est parce qu'il n'analyse pas vos classes Controller & Service que vous devez spécifier dans votre classe main () comme ceci,
Remarque: Ici, j'ai spécifié diverses classes comme la démo, le contrôleur et le service à analyser, alors seulement cela fonctionnera correctement.
la source
Vous devez organiser les packages de sorte que le package contenant public static main (ou où vous avez écrit @SpringBootApplication), soit le père de tous vos autres packages.
la source
Par défaut, Spring Boot analysera le package actuel pour la définition du bean. Donc, si votre package actuel dans lequel la classe principale est définie et le package de contrôleur n'est pas le même ou que le package de contrôleur n'est pas le package enfant de votre package d'application principal, il n'analysera pas le contrôleur. Pour résoudre ce problème, vous pouvez inclure la liste des packages pour la définition du bean dans le package principal
ou créer une hiérarchie de package où le package enfant est dérivé du package principal
la source
Le problème est que vous naviguez vers localhost: 8080 / au lieu de localhost: 8080 / upload comme prescrit dans le guide. Spring Boot a une page d'erreur par défaut utilisée lorsque vous naviguez vers un itinéraire non défini pour éviter de divulguer des détails spécifiques au serveur (qui peuvent être considérés comme un risque de sécurité).
Vous avez le choix entre: visiter la bonne page, ajouter votre propre page de destination ou remplacer la page d'erreur blanche .
Pour simplifier cette situation particulière, j'ai mis à jour le guide afin qu'il utilise / au lieu de / upload.
la source
Je sais que ce n'est pas exactement la réponse à la question, mais cette question est la première qui apparaît sur Google :)
Le problème ("Cette application n'a pas de mappage explicite pour / erreur") apparaît lors de la tentative d'accès à l'interface utilisateur Swagger.
Dans mon cas, les problèmes ont été causés par @RestController ("/ endpoint"), qui n'est pas géré correctement par swagger.
Donc, cela a entraîné des erreurs:
Et c'était bien
la source
cela peut arriver si vous oubliez l'annotation @RestController en haut de votre classe de contrôleur import import org.springframework.web.bind.annotation.RestController;
et ajoutez l'annotation comme ci-dessous
reportez-vous à l'exemple simple ci-dessous
la source
Changez @Controller en @RestController dans votre classe de contrôleur et tout devrait se dérouler sans problème.
la source
J'ai moi aussi eu la même erreur et j'ai pu résoudre l'erreur en ajoutant la dépendance ci-dessous à mon pom.xml.
La raison en est que nous utilisons JSP comme vue. Le conteneur de servlet intégré par défaut pour Spring Boot Starter Web est tomcat. Pour activer la prise en charge des JSP, nous aurions besoin d'ajouter une dépendance sur tomcat-embed-jasper.
Dans mon cas, je retournais un JSP comme vue du contrôleur. J'espère que cette réponse aidera quelqu'un qui est aux prises avec le même problème.
la source
J'étais confronté au même problème, en utilisant gradle et il a été résolu en ajoutant les dépendances suivantes -
plus tôt, je manquais le dernier causant la même erreur.
la source
J'étais confronté à ce problème, puis j'ai réalisé plus tard qu'il me manquait l'
@Configuration
annotation dans laMvcConfig
classe qui fait essentiellement le mappage pourViewControllers
etsetViewNames
.Voici le contenu du fichier:
J'espère que cela aide quelqu'un !!
la source
Assurez-vous que vous avez jasper et jstl dans la liste des dépendances:
Voici un projet de démarrage de travail - https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-jsp
Auteur: Biju Kunjummen
la source
Je dois mentionner cette façon et donner la référence aux paquets et cela a fonctionné. Vous pouvez exclure
@EnableAutoConfiguration
cette annotation, mais je suis obligé de contourner toutes les dépendances liées à la base de données.la source
La classe principale doit être en dehors de l'arborescence de vos packages d'application. Par exemple:
la source
Tout ce que j'ai fait pour résoudre ce genre de problème est de mentionner une @Configuration dans MVCConfig Class.
Comme celui-ci :
la source
J'ai eu une erreur similaire, j'utilise le spring boot et la vitesse, ma solution est de vérifier le fichier application.properties, spring.velocity.toolbox-config-location trouvé que cette propriété est fausse
la source
Dans mon cas, ce problème se produit lors de l'exécution de SpringApplication à partir d'IntelliJ après l'avoir d'abord exécuté avec maven.
Pour résoudre le problème, je cours en premier
mvn clean
. Ensuite, j'exécute SpringApplication à partir d'IntelliJ.la source
Assurez-vous que votre fichier Main. la classe doit être au-dessus de vos contrôleurs. Dans le cas de l'exemple suivant:
Main.class contenant:
EmployeeController. classe contenant:
Si votre classe principale est dans le dossier racine, tout comme ce chemin: {projectname} / src / main / java / main alors assurez-vous que vos contrôleurs sont en dessous de votre classe Main. Par exemple {projectname} / src / main / java / main / controllers .
la source
Dans votre fichier java (par exemple: Viper.java) ayant la classe principale, ajoutez: "@RestController" et @RequestMapping ("/")
la source
Vérifiez si vous avez marqué la classe de contrôleur avec l' annotation @RestController .
la source