由@RequestMapping构建的网址名称无法按预期使用自定义名称

时间:2017-10-16 09:16:47

标签: 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";
    }
}

我希望通过映射名称来构建视图中的URL:

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

但我得到一个例外:

  

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


从类型级name中删除@RequestMapping属性会使CC#listAwaitingApproval生效,但是它不应该与指定名称一起使用吗?

1 个答案:

答案 0 :(得分:3)

来自documentation

  

public abstract String name

     

为此映射指定名称。支持的   在类型级别以及方法级别!在两者上使用时   级别,组合名称通过与&#34;#&#34;串联而得到。如   分离器。

关键时刻是When used on both levels

所以你应该为@GetMapping分配名称,它应该开始工作

相关问题