在我的控制器中,@ GetMapping的以下用法有效:

@GetMapping(value = "/new")
public String newEssay(){
    return "articles/essay_new";
}


但这不是这样的:

@GetMapping(value = "/essays/{essayId: [0-9]+}")
//@RequestMapping(value = "/essays/{essayId:[0-9]+}", method = RequestMethod.GET)
public String getEssay(Model model,
                       @PathVariable("essayId") long essayId) throws NoFindException, ForBiddenException, ParseException {
    JsEssay jsEssay = jsBiz.get(JsEssay.class, essayId);

    model.addAttribute("jsEssay", jsEssay);
    return "articles/essay";
}


我在Spring 4.3.3和5.0.0.M5中尝试过。

配置:

@Configuration
@ComponentScan( basePackages = {"me.freezehome.blog"},
            excludeFilters = {
                @ComponentScan.Filter(type = FilterType.ANNOTATION,     value = EnableWebMvc.class)
            }
)
public class RootConfig {
}



@Configuration
@EnableWebMvc
@Import({WebSecurityConfig.class})
public class WebConfig  extends WebMvcConfigurerAdapter{
    @Bean
    public RequestMappingHandlerMapping requestMappingHandlerMapping(){
        return new RequestMappingHandlerMapping();
    }
    @Bean
    public RequestMappingHandlerAdapter requestMappingHandlerAdapter(){
        return new RequestMappingHandlerAdapter();
    }
}


Google结果:


Add support for @GetMapping, @PostMapping etc. introduced in Spring 4.3 in ControllerLinkBuilder #471
GetMapping and PostMapping annotations Ask


github资料来源:lbfreeze-blog-develop

最佳答案

请在essayId:之后删除空格

另外,您无需为value =编写@GetMapping

09-25 22:14