簡體   English   中英

Spring MVC 4控制器未調用

[英]Spring MVC 4 controllers not called

編輯:我意識到我在ComponentScan犯了一個錯誤,因為很多評論者指出,我對其進行了更改,但仍然無法正常工作(仍然是404)。

我有一個項目,正在使用所有基於注釋的配置。 這是配置文件:

WebConfig.java

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "src.controller")
public class WebConfig extends WebMvcConfigurerAdapter{

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/jsp/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

}

WebInitializer.java

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { WebConfig.class };

    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

}

我也有一個持久性配置,但是我認為這與這個問題無關。 無論如何,這是我的根路徑控制器:

AuthorController.java

@Controller
@RequestMapping({"/authors", "/"})
public class AuthorController {

    @Autowired
    AuthorService authorservice;

    @RequestMapping(method=RequestMethod.GET)
    public String getAuthors(ModelMap model){
        System.out.println("----------called--------------"); //not printed
        List<Author> authors = authorservice.getAllAuthors();
        model.addAttribute("authors", authors);
        return "authors";
    }
}

控制器永遠不會被調用,最終我會收到404錯誤。

您能告訴'AuthorController'所屬的軟件包的名稱嗎? 我認為問題出在@ComponentScan(basePackages = "src") 在這里,您應該添加控制器類的軟件包名稱。

@ComponentScan(basePackages = "com.sample.app") 

@ComponentScan(basePackages = "com.sample.*") 

@ComponentScan(basePackages = "com.*")

以上所有都是ComponentScan批注的有效條目。

@ComponentScan批注的basePackages屬性不表示Java代碼所在的文件夾。 它代表Spring應該在其中掃描Spring Bean的Java類的根包。

因此,如果您的控制器位於com.myapp.web.controllers中, com.myapp.web.controllers如下所示進行配置:

@ComponentScan(basePackages = "com.myapp.web.controllers")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM