Usé maven para hacer el tutorial https://spring.io/guides/gs/uploading-files/
Se copiaron todos los códigos que usé.
La aplicación se puede ejecutar, pero aparece el error:
Página de error de etiqueta blanca Esta aplicación no tiene un mapeo explícito para / error, por lo que está viendo esto como una alternativa. Mar 30 de junio 17:24:02 CST 2015 Hubo un error inesperado (tipo = No encontrado, estado = 404). No hay mensajes disponibles
¿Cómo puedo arreglarlo?
spring
spring-mvc
file-upload
upload
Deng Steve
fuente
fuente
Respuestas:
Asegúrese de que su clase principal esté en un paquete raíz por encima de otras clases.
Cuando ejecuta una aplicación Spring Boot (es decir, una clase anotada con @SpringBootApplication), Spring solo escaneará las clases debajo de su paquete de clases principal.
fuente
Cuando creamos una aplicación de arranque Spring, la anotamos con una
@SpringBootApplication
anotación. Esta anotación 'resume' muchas otras anotaciones necesarias para que la aplicación funcione. Una de esas anotaciones es la@ComponentScan
anotación. Esta anotación le dice a Spring que busque componentes de Spring y configure la aplicación para que se ejecute.Su clase de aplicación debe estar en la parte superior de la jerarquía de paquetes, para que Spring pueda escanear subpaquetes y descubrir los otros componentes necesarios.
El siguiente fragmento de código funciona ya que el paquete del controlador está debajo del
com.test.spring.boot
paqueteEl siguiente fragmento de código NO funciona ya que el paquete del controlador NO está debajo del
com.test.spring.boot
paqueteDe la documentación de Spring Boot:
fuente
Puede resolver esto agregando un
ErrorController
en su aplicación. Puede hacer que el controlador de errores devuelva una vista que necesita.El controlador de error en mi aplicación se ve a continuación:
La clase anterior se basa en la clase Springs BasicErrorController .
Puede crear una instancia de lo anterior de
ErrorController
esta manera en un@Configuration
archivo:Puede elegir anular el valor predeterminado
ErrorAttributes
implementando ErrorAttributes . Pero en la mayoría de los casos, los DefaultErrorAttributes deberían ser suficientes.fuente
BasicErrorController
clase 404.BasicErrorController
ya no es bueno, ¿puedes actualizar?BasicErrorController
está arreglado ahora.En mi caso, la clase de controlador se anotó con
@Controller
. Cambiar eso para@RestController
resolver el problema. Básicamente,@RestController
se@Controller + @ResponseBody
usa@RestController
o@Controller
con@ResponseBody
anotaciones con cada método.Algunas notas útiles aquí: https://www.genuitec.com/spring-frameworkrestcontroller-vs-controller/
fuente
@RestController
ella, implícitamente agrega la@ResponseBody
anotación, pero si está usando la@Controller
anotación, debe agregar explícitamente esta anotación usted mismo.en mi caso, debido a la posición del paquete, lo que significa que el paquete del controlador debe estar por encima del paquete de clase principal
si mi paquete de clase principal es
package co.companyname.spring.tutorial;
cualquier paquete de controlador deberíapackage co.companyname.spring.tutorial.WHAT_EVER_HERE;
después de terminar la codificación, presione el tablero de arranque
una última cosa para asegurarse de que su controlador esté mapeando o no solo la consola, debería ver algo smilliar
codificación feliz
fuente
Esto sucede cuando no se define una página de error explícita. Para definir una página de error, cree una asignación de / error con una vista. por ejemplo, el código siguiente se asigna a un valor de cadena que se devuelve en caso de error.
fuente
Intente agregar la dependencia.
fuente
Agregué esta dependencia y resolvió mi problema.
fuente
Estoy desarrollando la aplicación Spring Boot durante algunas semanas ... Y estaba obteniendo el mismo error que el siguiente;
Cuando recibo este mensaje de error, me di cuenta de que mi controlador o la clase de controlador de descanso están definidos en una nota en mi proyecto. Me refiero a que todos nuestros paquetes de controladores no son el mismo paquete con la clase principal que incluye la anotación @SpringBootApplication ... Quiero decir que debe agregar el nombre del paquete del controlador a la anotación @ComponentScan a su clase principal, que incluye la anotación @SpringBootApplication. a continuación, su problema se resolverá ... Lo más importante es que debe agregar el paquete de todos los controladores a la anotación @ComponentScan como lo hice en el siguiente
Espero que estos códigos ayuden a alguien ...
Si encuentra otra forma de solucionar este error o tiene algunas sugerencias para mí, por favor escriba a los comentarios ... gracias ...
fuente
En la clase principal, después de la configuración "@SpringBootApplication", agregar "@ComponentScan" sin tener ningún argumento, funcionó para mí.
Clase principal :
Clase RestController:
PD: no se pierda de ejecutar los comandos mvn clean y mvn install, antes de iniciar la aplicación
fuente
Bastante tarde para la fiesta. Según la documentación oficial de Spring, "Spring Boot instala una página de error de etiqueta blanca que se ve en un cliente de navegador si encuentra un error en el servidor". https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-customize-the-whitelabel-error-page
server.error.whitelabel.enabled=false
en application.yml o en el archivo application.properties .2. La forma recomendada es configurar su página de error para que el usuario final pueda entender. En la carpeta recursos / plantillas, cree un archivo error.html y agregue dependencia en el archivo pom.xml
Spring elegirá automáticamente la página error.html como la plantilla de error predeterminada. Nota: - No olvide actualizar el proyecto maven después de agregar la dependencia.
fuente
Es posible que reciba el error, es decir
"Esta aplicación no tiene un mapeo explícito para / error, por lo que está viendo esto como una alternativa".
Esto se debe a que no está escaneando sus clases de controlador y servicio que debe especificar en su clase main () de esta manera,
Nota: Aquí, he especificado varias clases como demostración, controlador y servicio para escanear, entonces solo funcionará correctamente.
fuente
Tienes que organizar los paquetes de modo que el paquete que contiene el main estático público (o donde escribiste @SpringBootApplication), sea el padre de todos tus otros paquetes.
fuente
Por defecto, el arranque de primavera escaneará el paquete actual para la definición de bean. Entonces, si su paquete actual donde se define la clase principal y el paquete del controlador no es el mismo o el paquete del controlador no es el paquete secundario de su paquete de aplicación principal, no escaneará el controlador. Para resolver este problema, se puede incluir una lista de paquetes para la definición de frijoles en el paquete principal
o crear una jerarquía de paquete donde el paquete hijo se deriva del paquete principal
fuente
El problema es que está navegando a localhost: 8080 / en lugar de localhost: 8080 / upload como se indica en la guía. Spring Boot tiene una página de error predeterminada que se usa cuando navega a una ruta indefinida para evitar revelar detalles específicos del servidor (que pueden verse como un riesgo de seguridad).
Sus opciones son: visitar la página correcta, agregar su propia página de destino o anular la página de error blanca .
Para simplificar esta situación particular, actualicé la guía para que use / en lugar de / upload.
fuente
Sé que no es exactamente la respuesta a la pregunta, pero esta pregunta es la primera que aparece en Google :)
El problema ("Esta aplicación no tiene un mapeo explícito para / error") aparece al intentar acceder a la interfaz de usuario de Swagger.
En mi caso, los problemas fueron causados por @RestController ("/ endpoint"), que no es manejado correctamente por swagger.
Entonces, esto resultó en errores:
Y esto estuvo bien
fuente
esto puede suceder si olvida la anotación @RestController en la parte superior de su clase de controlador import import org.springframework.web.bind.annotation.RestController;
y agregue la anotación como se muestra a continuación
consulte el ejemplo simple a continuación
fuente
Cambie @Controller a @RestController en su clase de controlador y todo debería ir sin problemas.
fuente
Yo también obtuve el mismo error y pude resolver el error agregando la siguiente dependencia a mi pom.xml.
La razón es que estamos usando JSP como vista. El contenedor de servlet integrado predeterminado para Spring Boot Starter Web es tomcat. Para habilitar el soporte para JSP, necesitaríamos agregar una dependencia en tomcat-embed-jasper.
En mi caso, estaba devolviendo un JSP como vista desde el controlador. Espero que esta respuesta ayude a alguien que está luchando con el mismo problema.
fuente
Estaba enfrentando el mismo problema, usando gradle y se resolvió al agregar las siguientes dependencias:
antes me faltaba el último que causaba el mismo error.
fuente
Estaba enfrentando este problema y luego me di cuenta de que me faltaba la
@Configuration
anotación en laMvcConfig
clase que básicamente hace el mapeo paraViewControllers
ysetViewNames
.Aquí está el contenido del archivo:
Espero que esto ayude a alguien !!
fuente
Asegúrese de tener jasper y jstl en la lista de dependencias:
Aquí hay un proyecto inicial en funcionamiento: https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-jsp
Autor: Biju Kunjummen
fuente
Necesito mencionar de esta manera y dar la referencia a los paquetes y funcionó. Puede excluir
@EnableAutoConfiguration
esta anotación, pero es necesario que omita cualquier dependencia relacionada con la base de datos.fuente
La clase principal debe estar fuera de la estructura de árbol de los paquetes de la aplicación. Por ejemplo:
fuente
Todo lo que he hecho para resolver este tipo de problema es mencionar la anotación @Configuration en MVCConfig Class.
Como éste :
fuente
Tuve un error similar, utilizo el arranque y la velocidad de primavera, mi solución es verificar el archivo application.properties, spring.velocity.toolbox-config-location encontró que esta propiedad es incorrecta
fuente
En mi caso, este problema ocurre cuando se ejecuta SpringApplication desde IntelliJ después de ejecutarlo primero con maven.
Para resolver el problema, corro primero
mvn clean
. Luego ejecuto SpringApplication desde IntelliJ.fuente
Asegúrese de que su Main. la clase debe estar encima de sus controladores. En el caso del siguiente ejemplo:
Main.class que contiene:
EmployeeController. clase que contiene:
Si su clase principal está en la carpeta raíz, al igual que esta ruta: {nombre del proyecto} / src / main / java / main , asegúrese de que sus controladores estén debajo de su clase principal. Por ejemplo, {nombre de proyecto} / src / main / java / main / controllers .
fuente
En su archivo java (por ejemplo: Viper.java) que tenga la clase principal agregue: "@RestController" y @RequestMapping ("/")
fuente
Verifique si ha marcado la clase del controlador con la anotación @RestController .
fuente