我有以下控制器:
@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
生效,但是它不应该与指定名称一起使用吗?
答案 0 :(得分:3)
public abstract String name
为此映射指定名称。支持的 在类型级别以及方法级别!在两者上使用时 级别,组合名称通过与&#34;#&#34;串联而得到。如 分离器。
关键时刻是When used on both levels
所以你应该为@GetMapping
分配名称,它应该开始工作