HTTP Status 404 - Not Found: для контроллера - в Idea не найдены средства разрешения для просмотра - PullRequest
0 голосов
/ 03 мая 2020

У меня есть следующий код Spring MVC:

файлы конфигурации :

public class MainWebAppInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(final ServletContext sc) throws ServletException {

        AnnotationConfigWebApplicationContext root =
                new AnnotationConfigWebApplicationContext();

        root.register(WebConfig.class);
        root.setServletContext(sc);

        root.scan("testspring");
        sc.addListener(new ContextLoaderListener(root));

        ServletRegistration.Dynamic appServlet =
                sc.addServlet("dispatcher", new DispatcherServlet(new GenericWebApplicationContext()));
        appServlet.setLoadOnStartup(1);
        appServlet.addMapping("/");
    }
}
@EnableWebMvc
@Configuration
@ComponentScan("testspring")
public class WebConfig extends WebMvcConfigurerAdapter {
/*
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
    }*/

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver bean = new InternalResourceViewResolver();

        bean.setViewClass(JstlView.class);
        bean.setPrefix("/WEB-INF/view/");
        bean.setSuffix(".html");

        return bean;
    }
}

контроллеры :

@Controller
public class HomeController {
    @RequestMapping(value = "/")
    public String home() {
        System.out.println("HHomeController: Passing through...");
        return "home.html";
    }
}
@RestController
public class TestRestController {
    @RequestMapping(value = "/api")
    public String home() {
        System.out.println("Rest: Passing through...");
        return "some json";
    }
}

При развертывании я получаю следующие ошибки:

enter image description here

enter image description here

Доступ к странице /api, однако, работает просто отлично.

РЕДАКТИРОВАТЬ :

После замены home.html на home ошибка все еще присутствует - и в IDE, и в браузере 404:

enter image description here

Также возможно это уместно - я получаю это всплывающее окно в одном из классов конфигурации :

enter image description here

Ответы [ 4 ]

0 голосов
/ 04 мая 2020

Проблема была в том, что я использовал JstlView.class и ViewResolver с .html страницами, которые я хотел визуализировать с помощью thymeleaf. Если я изменю код внутри WebConfig на:

   @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver bean = new InternalResourceViewResolver();

        bean.setViewClass(JstlView.class);
        bean.setPrefix("/WEB-INF/view/");
        bean.setSuffix(".jsp");

        return bean;
    }

и заменим home.html на home.jsp, он будет работать просто отлично.

Не знаю, как мне это нужно сделать thymeleaf. Я решил вместо этого go использовать остальные контроллеры, но, возможно, кто-то сможет позже опубликовать thymeleaf дружественную версию кода. Мне было рекомендовано это: https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html для написания правильного метода. Вернитесь к этому ответу и отредактируйте позже.

0 голосов
/ 03 мая 2020

Замените home. html на home и убедитесь, что у вас есть home. html Файл внутри / WEB-INF / view / folder.

0 голосов
/ 04 мая 2020

Попробуйте добавить метод запроса,

@Controller
public class HomeController {
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home() {
        System.out.println("HHomeController: Passing through...");
        return "home";
    }
}
0 голосов
/ 03 мая 2020

удалить. html просто вернуть представление в кавычках примерно так: "home"

...