有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring boot+Thymeleaf+ajax无法向控制器发送VO或DTO

我尝试通过thymeleaf+ajax将表单数据发送到Java控制器。 但在ReplyTo,无法接收数据

这是我的密码

特梅莱夫,阿贾克斯。html

function insertReply() {
    $.ajax({
        type: 'POST',
        url: '/reply/insertReply',
        data: $("#replyForm").serialize(),
        contentType: "application/json",
        success: function(data) {
            alert("test");
        },
        error: function(request, status, error) {
            alert("Error : " + error + "\nStatus : " + status + "\nRequest : " + request);
        }
    });
}

    <form id="replyForm" th:object="${replyDto}" th:method="post">
        <input type="hidden" th:field="${post.postNo}" th:value="${post.postNo}">
        
        <input class="form-control" type="text" th:field="*{replyTitle}" placeholder="replyTitle">
        <textarea class="form-control" th:field="*{replyContent}" placeholder="insert" id="replyContentData" style="height: 100px"></textarea>
        <button class="btn btn-primary" id="replyInsertButton" type="button" onclick='insertReply()'>댓글 입력</button>
    </form>

答复。爪哇

private int replyNo;
private String replyTitle;
private String replyContent;
private int postNo;

答复者。爪哇

@PostMapping("/insertReply")
public int insertReply(ReplyDto replyDto) {
    System.out.println(replyDto.getPostNo());
    System.out.println(replyDto.getReplyTitle());
    System.out.println(replyDto.getReplyContent());
    return replyService.insertReply(replyDto);
}

控制器具有注释@RestController。 在控制台上,日志0、null、null每个postNo、replyTitle、replyContent

如何将表单数据获取到控制器? 请帮忙


共 (1) 个答案

  1. # 1 楼答案

    1. 您缺少@RequestBody

      public int insertReply(@RequestBody ReplyDto ReplyDto){

    2. $("#replyForm").serialize()将表单转换为查询字符串。您需要有效的JSON

    您可能应该选择这样的解决方案:Spring RestController POST accepting a basic HTML form

    如果您坚持使用当前的解决方案:

    当修复丢失@RequestBody时,首先在Postman中验证控制器

    将表单转换为JSON: