使用@RequestMapping名称建立网址无法与预期名称一起使用

Ant*_*sss 5 spring spring-mvc thymeleaf

我有以下控制器:

@Controller
@RequestMapping(value = "/admin/comments", name = "AdminCommentsController")
@Slf4j
public class CommentsController {

    @Autowired
    private PlaceService placeService;

    @Autowired
    private CommentRepository commentRepository;

    @GetMapping("/awaiting-approval")
    public String listAwaitingApproval(@PageableDefault(size = 50, page = 0) Pageable pageable, Model model) {
        Page<Comment> comments = commentRepository.findByApprovedIsFalseOrApprovedIsNull(pageable);
        model.addAttribute("page", comments);

        return "admin/comments/awaitingApproval";
    }
}
Run Code Online (Sandbox Code Playgroud)

我想通过映射名称在视图中构建一个URL:

<li>
    <a th:href="${#mvc.url('AdminCommentsController#listAwaitingApproval')}" href="add.html">
        Awaiting approval
    </a>
</li>
Run Code Online (Sandbox Code Playgroud)

但我得到一个例外:

java.lang.IllegalArgumentException:找不到映射mappingName:AdminCommentsController#listAwaitingApproval


name从类型级别 删除属性@RequestMapping可以CC#listAwaitingApproval正常工作,但使用指定名称不能很好地工作吗?

Myk*_*nko 3

来自文档

公共抽象字符串名称

为该映射指定一个名称。在类型级别和方法级别都支持!当在两个级别上使用时,组合名称是通过以“#”作为分隔符连接而得出的。

关键时刻是When used on both levels

@GetMapping所以你也应该指定名称,它应该开始工作