spring - 通过 @RequestMapping 名称构建的 URL 无法按自定义名称的预期工作

标签 spring spring-mvc thymeleaf

我有以下 Controller :

@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";
    }
}

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

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

但我遇到了一个异常(exception):

java.lang.IllegalArgumentException: Mapping mappingName not found: AdminCommentsController#listAwaitingApproval


从类型级别 @RequestMapping 中删除 name 属性将使 CC#listAwaitingApproval 工作,但它不应该与指定名称一起工作吗?

最佳答案

来自documentation :

public abstract String name

Assign a name to this mapping. Supported at the type level as well as at the method level! When used on both levels, a combined name is derived by concatenation with "#" as separator.

关键时刻是在两个级别上使用时

因此,您还应该为 @GetMapping 指定名称,它应该开始工作

关于spring - 通过 @RequestMapping 名称构建的 URL 无法按自定义名称的预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46766797/

相关文章:

java - spring中如何通过xml文件将值传递给多个参数化的构造函数?

java - Spring 和混合 SQL 和 NoSQL 数据库

spring - 如何从第 1 页开始配置 Spring boot 分页,而不是 0

java - Spring boot中无法显示index.html页面

java - Thymeleaf 数组元素连接

java - 用 Guava 和 Spring 注入(inject) synchronizedMultiMap?

java - Spring + Hibernate 审计(无 Spring Data)

spring - 仅提供站点的缓存版本

java - 如何使用 Spring webflux 流式传输固定列表?

java - 从 spring multiple <form :select> 绑定(bind)对象