Bu uygulama / hata için açık bir eşleme içermiyor


108

Öğreticiyi yapmak için maven kullandım https://spring.io/guides/gs/uploading-files/
Kullandığım tüm kodlar kopyalandı.

Uygulama çalışabilir, ancak şu hatayı alıyorum:

Beyaz Etiket Hata Sayfası Bu uygulama / error için açık bir eşleme içermediğinden, bunu bir geri dönüş olarak görüyorsunuz. 30 Haz 17:24:02 CST 2015 Beklenmeyen bir hata oluştu (tür = Bulunamadı, durum = 404). Mesaj yok

Nasıl düzeltebilirim?


yorumunuzu gönderiye ekledi - kendiniz düzenleyebilirsiniz. Bu, kendi gönderinize yorum yapmaktan daha iyi
Alexander

Yanıtlar:


137

Ana sınıfınızın diğer sınıfların üzerinde bir kök paketinde olduğundan emin olun.

Bir Spring Boot Uygulamasını çalıştırdığınızda (yani @SpringBootApplication ile açıklanmış bir sınıf), Spring yalnızca ana sınıf paketinizin altındaki sınıfları tarayacaktır.

com
   +- APP
         +- Application.java  <--- your main class should be here, above your controller classes
         |
         +- model
         |   +- user.java
         +- controller
             +- UserController.java

4
Yukarıda mı yoksa aynı seviyede mi?
Martin Erlic

21
Hayatımın neredeyse 2 saatini bunu çözmek için harcadım!
Rakesh

7
Bunu da denedim. Hala hata. En azından ana sayfa yani localhost: 8080 bana Tomcat ana sayfasını göstermeli, değil mi? Ama bu da görünmüyor
zulkarnain shah

İpucu için teşekkürler. Eskiden Eclipse kullanıcısıydım ve orada bu konfigürasyona gerek yoktu, ancak şimdi IntelliJ kullanıyorum ve çok umutluydu.
Armer B.

@zulkarnainshah Her zamanki tomcat ana sayfası, burada bulunmayan bir SAVAŞ tarafından oluşturulur.
Thorbjørn Ravn Andersen

61

Bir Spring boot uygulaması oluşturduğumuzda, ona @SpringBootApplicationaçıklama ekliyoruz. Bu açıklama, uygulamanın çalışması için diğer birçok gerekli ek açıklamayı 'tamamlar'. Böyle bir ek @ComponentScanaçıklama nottur. Bu açıklama, Spring'e Spring bileşenlerini aramasını ve uygulamayı çalışacak şekilde yapılandırmasını söyler.

Spring'in alt paketleri tarayabilmesi ve diğer gerekli bileşenleri bulabilmesi için uygulama sınıfınızın paket hiyerarşinizin en üstünde olması gerekir.

package com.test.spring.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

Kodun altında pasajı çalışır kontrolör paketi altında olduğu gibi com.test.spring.bootpaketin

package com.test.spring.boot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

    @RequestMapping("/")
    public String home(){
        return "Hello World!";
    }
}

Kod parçacığı Aşağıda Work DEĞİLDİR kontrolör paket olarak altında değildir com.test.spring.bootpaketin

package com.test.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

     @RequestMapping("/")
     public String home(){
         return "Hello World!";
     }
 }

Spring Boot belgelerinden:

Birçok Bahar Boot geliştiriciler her zaman kendi ana sınıfı ile açıklamalı var @Configuration, @EnableAutoConfigurationve @ComponentScan. Bu ek açıklamalar birlikte çok sık kullanıldığından (özellikle yukarıdaki en iyi uygulamaları izlerseniz), Spring Boot uygun bir @SpringBootApplicationalternatif sağlar.

@SpringBootApplicationEk açıklama kullanarak eşdeğerdir @Configuration, @EnableAutoConfigurationve @ComponentScanvarsayılan özellikleri ile


3
Çok güzel bir açıklama. Teşekkür ederim
Lova Chittumuri

39

Bunu ErrorControlleruygulamanıza bir ekleyerek çözebilirsiniz . Hata denetleyicisinin ihtiyacınız olan bir görünümü döndürmesini sağlayabilirsiniz.

Uygulamamdaki Hata Denetleyicisi aşağıdaki gibi görünüyor:

import org.springframework.boot.autoconfigure.web.ErrorAttributes;
import org.springframework.boot.autoconfigure.web.ErrorController;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * Basic Controller which is called for unhandled errors
 */
@Controller
public class AppErrorController implements ErrorController{

    /**
     * Error Attributes in the Application
     */
    private ErrorAttributes errorAttributes;

    private final static String ERROR_PATH = "/error";

    /**
     * Controller for the Error Controller
     * @param errorAttributes
     */
    public AppErrorController(ErrorAttributes errorAttributes) {
        this.errorAttributes = errorAttributes;
    }

    /**
     * Supports the HTML Error View
     * @param request
     * @return
     */
    @RequestMapping(value = ERROR_PATH, produces = "text/html")
    public ModelAndView errorHtml(HttpServletRequest request) {
        return new ModelAndView("/errors/error", getErrorAttributes(request, false));
    }

    /**
     * Supports other formats like JSON, XML
     * @param request
     * @return
     */
    @RequestMapping(value = ERROR_PATH)
    @ResponseBody
    public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {
        Map<String, Object> body = getErrorAttributes(request, getTraceParameter(request));
        HttpStatus status = getStatus(request);
        return new ResponseEntity<Map<String, Object>>(body, status);
    }

    /**
     * Returns the path of the error page.
     *
     * @return the error path
     */
    @Override
    public String getErrorPath() {
        return ERROR_PATH;
    }


    private boolean getTraceParameter(HttpServletRequest request) {
        String parameter = request.getParameter("trace");
        if (parameter == null) {
            return false;
        }
        return !"false".equals(parameter.toLowerCase());
    }

    private Map<String, Object> getErrorAttributes(HttpServletRequest request,
                                                   boolean includeStackTrace) {
        RequestAttributes requestAttributes = new ServletRequestAttributes(request);
        return this.errorAttributes.getErrorAttributes(requestAttributes,
                includeStackTrace);
    }

    private HttpStatus getStatus(HttpServletRequest request) {
        Integer statusCode = (Integer) request
                .getAttribute("javax.servlet.error.status_code");
        if (statusCode != null) {
            try {
                return HttpStatus.valueOf(statusCode);
            }
            catch (Exception ex) {
            }
        }
        return HttpStatus.INTERNAL_SERVER_ERROR;
    }
}

Yukarıdaki sınıf, Springs BasicErrorController sınıfına dayalıdır .

Yukarıdakileri ErrorControllerbir @Configurationdosyada şu şekilde başlatabilirsiniz :

 @Autowired
 private ErrorAttributes errorAttributes;

 @Bean
 public AppErrorController appErrorController(){return new AppErrorController(errorAttributes);}

ErrorAttributesErrorAttributes uygulayarak varsayılanı geçersiz kılmayı seçebilirsiniz . Ancak çoğu durumda DefaultErrorAttributes yeterli olmalıdır.


1
BasicErrorController404 sınıfı ile bağlantınız .
Stephane

@owaism: bağlantısı BasicErrorControllerartık iyi değil, güncelleyebilir misin?
HDJEMAI

1
Bağlantısı BasicErrorControllerşimdi düzeltildi.
axiopisty

15

Benim durumumda denetleyici sınıfına not verildi @Controller. @RestControllerSorunu çözmek için bunu değiştirmek . Temelde @RestControllerolan @Controller + @ResponseBody ya kullanımda Yani @RestController, ya @Controllerile @ResponseBodyher yöntem ile açıklama.

Burada bazı yararlı notlar: https://www.genuitec.com/spring-frameworkrestcontroller-vs-controller/


Çalışır, ancak internet üzerindeki tüm örneklere göre temel konfigürasyon @Controller ile çalışmalıdır. Bu nedenden haberdar olan herhangi bir kişi neden sadece RestController'ın çalıştığını biliyor mu?
süpernova

Sınıfınıza bununla açıklama @RestControllereklediğinizde, @ResponseBodyek açıklamayı örtük olarak ekler , ancak @Controlleraçıklamayı kullanıyorsanız, bu ek açıklamayı kendiniz eklemeniz gerekir.
Robin Keskisarkka

10

benim durumumda paket pozisyonu nedeniyle, yani kontrolör paketi ana sınıf paketinin üstünde olmalıdır

ana sınıf paketim package co.companyname.spring.tutorial;herhangi bir denetleyici paketiysepackage co.companyname.spring.tutorial.WHAT_EVER_HERE;

package co.companyname.spring.tutorial; // package for main class
@SpringBootApplication
public class FirstProjectApplication {

    public static void main(String[] args) {
        SpringApplication.run(FirstProjectApplication.class, args);
    }
}


package co.companyname.spring.tutorial.controllers; // package for controllers 

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController 
public class HelloController { 

@RequestMapping("/hello")  
public String hello() {   
 return "Hello, world"; 
 }}

kodlamayı bitirdikten sonra önyükleme panosuna basın

görüntü açıklamasını buraya girin

Denetleyicinizin haritalandırdığından veya sadece konsol olmadığından emin olmak için son bir şey, bir şey görmelisiniz

Mapped "{[/hello]}" onto public java.lang.String co.companyname.spring.tutorial.controllers.HelloController.hello()

mutlu kodlama


9

Bağımlılığı eklemeyi deneyin.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2
bu aslında ne yapıyor?
Stealth Rabbi

Bu bağımlılığı ekledim ve işe yaradı. @StealthRabbi gibi ... Bunun aslında ne işe yaradığını da merak ediyorum.
twindham

@StealthRabbi Bu, JSP'ye alternatif ve tercih edilen bir yaklaşım olan Thymeleaf adlı bir şablon oluşturma çerçevesine bir bağımlılık ekler. Bu cevap gerçek bir cevap değil imo, bağımlılıkların etrafından dolaşmak, asıl meseleyle gerçekten ilgilenen hiç kimseye yardımcı olmuyor
Christian

9

Bu, açık bir hata sayfası tanımlanmadığında gerçekleşir. Bir hata sayfası tanımlamak için, bir görünümle / hata eşlemesini oluşturun. Örneğin, aşağıdaki kod, bir hata durumunda döndürülen bir dize değeriyle eşleşir.

package com.rumango.controller;

import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class IndexController implements ErrorController{
    private final static String PATH = "/error";
    @Override
    @RequestMapping(PATH)
    @ResponseBody
    public String getErrorPath() {
        // TODO Auto-generated method stub
        return "No Mapping Found";
    }

}

Kodunuza bir açıklama ekleyebilir misiniz? Neden can alıcı kısımları olan soruyu çözüyor?
Nico Haase

Bu cevapta Spring Boot ile ilgili olarak dikkat edilmesi gereken, ilk başta bana biraz baş ağrısına neden olan belirli bir şey var. Springframework'un ErrorController arayüzünü uygulamak önemlidir. Bunu yapmadan "/ error" ile eşlenmiş bir denetleyici uç noktası oluşturursanız, yöntemin zaten eşlendiğini belirten bir hata alırsınız.
mmaynar1

5

Bu bağımlılığı ekledim ve sorunumu çözdü.

<dependency>
    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

Teorim şu: "@Controller" kullanıyorsak, Spring bir şekilde belirli bir şablon motoruna sahip olmamızı gerektirecektir. Ve bu durumda, Thymeleaf. Bu nedenle, yaylı önyükleme başlatıcı timeleaf gereklidir. Oysa "@RestController" kullanıyorsak, Spring Boot bir şablon motoru gerektirmez. Ve bu nedenle, Thymeleaf olmadan çalışır.
Yosi Pramajaya

4

Spring Boot uygulamasını birkaç haftadır geliştiriyorum .. Ve aşağıdaki gibi aynı hatayı aldım;

Beyaz Etiket Hata Sayfası Bu uygulama / error için açık bir eşleme içermediğinden, bunu bir geri dönüş olarak görüyorsunuz. Per 18 Ocak 14:12:11 AST 2018 Beklenmeyen bir hata oluştu (tür = Bulunamadı, durum = 404). Mesaj yok

Bu hata masajını aldığımda, denetleyicimin veya dinlenme denetleyici sınıfımın projemde tanımlanan not olduğunu fark ettim. Demek istediğim, tüm denetleyici paketlerimiz, @SpringBootApplication ek açıklamasını içeren ana sınıfla aynı paket değildir .. Yani, denetleyici paketinin adını @SpringBootApplication açıklamasını içeren ana sınıfınıza @ComponentScan ek açıklamasına eklemeniz gerekir. Aşağıdakilerden sorununuz çözülecek ... En önemli şey, tüm denetleyicinizin paketini, aşağıda yaptığım gibi @ComponentScan ek açıklamasına eklemeniz gerektiğidir.

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan({ "com.controller.package1, com.controller.package2, com.controller.package3, com.controller.packageN", "controller", "service" } // If our Controller class or Service class is not in the same packages we have //to add packages's name like this...directory(package) with main class
public class MainApp {
    public static void main(String[] args) {
        SpringApplication.run(MainApp.class, args);
    }
}

Umarım bu kodlar birine yardımcı olur ...

Bu hatayı çözmenin başka bir yolunu bulursanız veya benim için bazı önerileriniz varsa, lütfen yorumlara yazın ... teşekkürler ...


4

Ana sınıfta, "@SpringBootApplication" yapılandırmasından sonra herhangi bir argüman olmadan "@ComponentScan" eklemek benim için çalıştı !!!

Ana sınıf :

@SpringBootApplication
@ComponentScan
public class CommentStoreApplication {

    public static void main(String[] args) {
        SpringApplication.run(CommentStoreApplication.class, args);

    }
}

RestController Sınıfı:

@RestController
public class CommentStoreApp {

    @RequestMapping("/") 
    public String hello() {
        return "Hello World!";
    }
}

Not: Uygulamayı başlatmadan önce mvn clean ve mvn install komutlarını çalıştırmayı unutmayın


4

Partiye oldukça geç. İlkbahar resmi belgelerine göre "Spring Boot, bir sunucu hatasıyla karşılaşırsanız tarayıcı istemcisinde gördüğünüz bir beyaz etiket hata sayfası yükler." https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-customize-the-whitelabel-error-page

  1. Sen ayarlayarak devre dışı bırakabilirsiniz server.error.whitelabel.enabled=falseiçinde application.yml veya application.properties dosyası.

2. Önerilen yol , hata sayfanızı son kullanıcının anlayabileceği şekilde ayarlamaktır. Altında kaynaklar / şablonlar bir oluşturmak klasör error.html dosyayı ve eklenti bağımlılık pom.xml dosyası

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

Spring, error.html sayfasını varsayılan hata şablonu olarak otomatik olarak seçecektir. Not: - Bağımlılık ekledikten sonra maven projesini güncellemeyi unutmayın.


3

Yani hatayı alıyor olabilirsiniz

"Bu uygulamanın / error için açık bir eşlemesi yok, bu yüzden bunu bir yedek olarak görüyorsunuz."

Bunun nedeni, main () sınıfınızda belirtmeniz gereken Controller & Service sınıflarınızı şu şekilde taramamasıdır,

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
**@ComponentScan({"com.example.demo", "controller", "service"})**
public class SpringBootMvcExample1Application {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootMvcExample1Application.class, args);
    }
}

Not: Burada taranacak demo, kontrolör ve servis gibi çeşitli sınıfları belirledim, o zaman sadece düzgün çalışacaktır.


3

Paketleri, genel statik main'i içeren paket (veya @SpringBootApplication yazdığınız yer), diğer tüm paketlerinizin babası olacak şekilde düzenlemeniz gerekir.


- com.mypackage + nameApplication.java - com.mypachage.model - com.mypachage.controller - com.mypachage.dao
sakgeek

3

Varsayılan olarak ilkbahar önyüklemesi, fasulye tanımı için geçerli paketi tarayacaktır. Dolayısıyla, ana sınıfın tanımlandığı ve denetleyici paketinin aynı olmadığı veya denetleyici paketinin ana uygulama paketinizin alt paketi olmadığı mevcut paketiniz denetleyiciyi taramayacaktır. Bu sorunu çözmek için ana pakete çekirdek tanımı için paket listesi eklenebilir.

@SpringBootApplication(scanBasePackages = {"com.module.restapi1.controller"})

veya alt paketin ana paketten türetildiği bir paket hiyerarşisi oluşturun

package com.module.restapi;
package com.module.restapi.controller

2

Sorun şu ki, kılavuzda belirtildiği gibi localhost: 8080 / yerine localhost: 8080 / upload gidiyorsunuz. Spring Boot, sunucuya özgü ayrıntıları vermekten kaçınmak için tanımlanmamış bir rotaya gittiğinizde kullanılan varsayılan bir hata sayfasına sahiptir (bu, bir güvenlik riski olarak görülebilir).

Seçenekleriniz şunlardır: doğru sayfayı ziyaret edin, kendi açılış sayfanızı ekleyin veya beyaz hata sayfasını geçersiz kılın .

Bu durumu basitleştirmek için kılavuzu, / upload yerine / kullanacak şekilde güncelledim.


2

Bunun tam olarak sorunun cevabı olmadığını biliyorum, ancak bu soru ilk olarak Google'da görünen :)

Swagger kullanıcı arayüzüne erişmeye çalışırken sorun ("Bu uygulamanın / hata için açık bir eşlemesi yok") görünüyor.

Benim durumumda sorunlara @RestController ("/ endpoint") neden oldu, bu da swagger tarafından düzgün bir şekilde ele alınmadı.

Bu, hatalara neden oldu:

@RestController("/endpoint")
public class EndpointController {

Ve bu iyiydi

@RestController
@RequestMapping("/endpoint")
public class EndpointController {

2

bu, denetleyici sınıfınızın üstündeki @RestController ek açıklamasını unutursanız, import org.springframework.web.bind.annotation.RestController;

ve ek açıklamayı aşağıdaki gibi ekleyin

aşağıdaki basit örneğe bakın

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;


@RestController
public class HelloController {
@RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }

}

1

Denetleyici sınıfınızda @Controller'ı @RestController olarak değiştirin ve her şey sorunsuz gitmelidir.


1

Ben de aynı hatayı aldım ve aşağıdaki bağımlılığı pom.xml dosyama ekleyerek hatayı çözebildim.

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

Nedeni, görünüm olarak JSP kullanıyoruz. Spring Boot Starter Web için varsayılan yerleşik sunucu uygulaması kapsayıcısı tomcat'tir. JSP desteğini etkinleştirmek için tomcat-embed-jasper'a bir bağımlılık eklememiz gerekir.

Benim durumumda bir JSP'yi denetleyiciden görünüm olarak iade ediyordum. Umarım bu cevap aynı sorunla mücadele eden birine yardımcı olur.


1

Gradle kullanarak aynı problemle karşı karşıyaydım ve aşağıdaki bağımlılıkları ekleyerek çözüldü:

compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
compile('org.apache.tomcat.embed:tomcat-embed-jasper')

daha önce aynı hataya neden olan sonuncuyu kaçırıyordum.


Aynı sorunu yaşadım ve pom.xml'de tomcat-embed-jasper eklentisi eksikti. Ve tomcat-embed-jasper, jsp oluşturmak için önemlidir.
rinilnath

boraji.com/… , bu ipucu tomcat-embed-
jasper'ın

1

Bu sorunla karşı karşıyaydım ve daha sonra, temelde ve için eşleştirmeyi @Configurationyapan MvcConfigsınıfta notu kaçırdığımı fark ettim .ViewControllerssetViewNames

İşte dosyanın içeriği:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
**@Configuration**
public class MvcConfig implements WebMvcConfigurer{
   public void addViewControllers(ViewControllerRegistry registry)
   {
      registry.addViewController("/").setViewName("login");
      registry.addViewController("/login").setViewName("login");
      registry.addViewController("/dashboard").setViewName("dashboard");
   }
}

Umarım bu birine yardımcı olur !!


Bu benim için yaptı.
Anthony Okoth

1

Bağımlılıklar listesinde jasper ve jstl bulunduğundan emin olun:

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

İşte çalışan bir başlangıç ​​projesi - https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-jsp

Eser sahibi: Biju Kunjummen


1

Bu şekilde bahsetmem ve paketlere referans vermem gerekiyor ve işe yaradı. @EnableAutoConfigurationBu açıklamayı hariç tutabilirsiniz, ancak DB ile ilgili herhangi bir bağımlılığı atlamam için gerekli.

@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@ComponentScan(basePackages = {"your package 1", "your package2"})

public class CommentStoreApplication {

    public static void main(String[] args) {
        SpringApplication.run(CommentStoreApplication.class, args);

    }
}

1

Ana sınıf , uygulama paketleri ağaç yapınızın dışında olmalıdır . Örneğin: misal


0

Bu tür bir sorunu çözmek için yaptığım tek şey , MVCConfig Sınıfında bir açıklama @ Yapılandırma'dan bahsetmek .

Bunun gibi :

package com.example;

/**
 * Created by sartika.s.hasibuan on 1/10/2017.
 */
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@EnableAutoConfiguration
@Configuration
@ComponentScan
public class MvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/home").setViewName("home");
        registry.addViewController("/").setViewName("home");
        registry.addViewController("/hello").setViewName("hello");
        registry.addViewController("/login").setViewName("login");
    }

}

0

Benzer bir hata yaptım, yay önyüklemesini ve hızını kullanıyorum, çözümüm application.properties, spring.velocity.toolbox-config-location dosyasını kontrol etmek, bu özelliğin yanlış olduğunu buldu


0

Benim durumumda, bu sorun, SpringApplication'ı IntelliJ içinden ilk önce maven ile çalıştırdıktan sonra çalıştırırken ortaya çıkıyor.

Sorunu çözmek için önce ben koşarım mvn clean. Ardından IntelliJ içinden SpringApplication'ı çalıştırıyorum.


0

Ana cihazınızdan emin olun. sınıfı , denetleyicilerinizin üstünde olmalıdır. Aşağıdaki örnek durumunda:

Ana. Sınıf şunları içerir:

@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
}

EmployeeController. içeren sınıf :

@RestController
public class EmployeeController {
    @InitBinder
    public void setAllowedFields(WebDataBinder dataBinder) {
        dataBinder.setDisallowedFields("id");
    }

    @RequestMapping(value = "/employee/save", method = RequestMethod.GET)
    public String save(){
        Employee newEmp = new Employee();
        newEmp.setAge(25);
        newEmp.setFirstName("Pikachu");
        newEmp.setId(100);
        return "Name: " + newEmp.getFirstName() + ", Age: " + newEmp.getAge() + ", Id = " + newEmp.getId();
    }
}

Ana sınıfınız kök klasördeyse, tıpkı şu yol gibi: {proje adı} / src / main / java / main , denetleyicilerinizin Main sınıfınızın altında olduğundan emin olun. Örneğin {proje adı} / src / main / java / main / kontrolörler .


0

Ana sınıfa sahip java dosyanıza (örneğin: Viper.java) şunu ekleyin: "@RestController" ve @RequestMapping ("/")

@SpringBootApplication
@RestController
public class Viper {

  @RequestMapping("/")

   public String home(){
          return "This is what i was looking for";                      
     }

public static void main( String[] args){

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

}

0

Denetleyici sınıfını @RestController ek açıklaması ile işaretleyip işaretlemediğinizi kontrol edin .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.