Spring MVC Dispatcher не может найти метод обработчика контроллера - PullRequest
0 голосов
/ 24 октября 2018

У меня самая странная ошибка в истории.В моих журналах проверяется, что я создал сопоставление для «TrainingRequest»

018-10-23 21: 58: 43,900 [main] [INFO] oswsmmaRequestMappingHandlerMapping - Mapped "{[/ TrainingRequest], method = [GET]} "

Но когда я пытаюсь перейти на страницу http://localhost:8080/WEB/TrainingRequest,, я получаю страницу 404, и в журналах говорится, что диспетчер не может найти сопоставление.Ниже читается как

2018-10-23 22: 00: 17,129 [http-nio-8080-exec-1] [DEBUG] oswsmmaRequestMappingHandlerMapping - не найден метод обработчика для [/ TrainingRequest] 2018-10-23 22: 00: 17,132 [http-nio-8080-exec-1] [WARN] osweb.servlet.PageNotFound - Не найдено сопоставление для HTTP-запроса с URI [/ WEB / TrainingRequest] в DispatcherServlet

http://localhost:8080/WEB/ работает правильно, поэтому я сомневаюсь, что это проблема конфигурации.Тем не менее, вот фрагменты ниже.Если вы считаете, что проблема может быть в файловой структуре, вот моя github ссылка

WebConfig.Java

@EnableWebMvc
@Configuration
@ComponentScan(basePackages = "com.project.LNUProject.config")
@Slf4j
public class WebConfig implements WebMvcConfigurer {

    // == constants ==
    public static final String RESOLVER_PREFIX = "/WEB-INF/view/";
    public static final String RESOLVER_SUFFIX =".jsp";

    // == bean methods
    @Bean
    public ViewResolver viewResolver() {
        UrlBasedViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix(RESOLVER_PREFIX);
        viewResolver.setSuffix(RESOLVER_SUFFIX);
        return viewResolver;
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        log.info("registry add properly");
        registry.addViewController("/").setViewName(ViewNames.HOME);
    }
}

ConstantsController.java

@Controller
@Slf4j
public class ConstantsController {
    // == handler methods ==
    // http://localhost:8080/WEB/
    @GetMapping("/")
    public String home() {
        log.info("Home template map");
        return ViewNames.HOME;
    }
}

RequestTraining.java

@Controller
@Slf4j
public class RequestTrainingController {

    final String NAME = "TrainingRequest";

    // == handler methods ==
    // http://localhost:8080/WEB/TrainingRequest
    @GetMapping(NAME)
    public String TableView() {
        log.info("Training VIEW being called");
        return NAME;
    }

    @GetMapping(Mappings.HOME + NAME + Mappings.EDIT)
    public String EditTableView() {
        return NAME + Mappings.EDIT;
    }

    @GetMapping(Mappings.HOME + NAME + Mappings.DELETE)
    public String DeleteTableView() {
        return NAME + Mappings.DELETE;

    }

    @GetMapping(Mappings.HOME + NAME + Mappings.ADD)
    public String AddTableView() {
        return NAME + Mappings.ADD;
    }
}

1 Ответ

0 голосов
/ 24 октября 2018

В вашем addViewController отображении метода для TrainingRequest отсутствует

Сделайте что-то подобное

@Override
    public void addViewControllers(ViewControllerRegistry registry) {
        log.info("registry add properly");
        registry.addViewController("/").setViewName(ViewNames.HOME);
        registry.addViewController("/TrainingRequest").setViewName("TrainingRequest");
    }
...