我尝试通过eleaf+ajax将表单数据发送到java控制器。但在replydto,无法接收数据。
这是我的密码。
themeleaf、ajax.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>
回复到.java
private int replyNo;
private String replyTitle;
private String replyContent;
private int postNo;
replycontoller.java文件
@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条答案
按热度按时间x0fgdtte1#
你的名字不见了
@RequestBody
public int insertreply(@requestbody replydto replydto){。。。$("#replyForm").serialize()
将窗体转换为查询字符串。您需要有效的json您可能应该选择这样的解决方案:springrestcontroller post接受一个基本的html表单
如果您坚持使用当前的解决方案:
开始验证控制器在 Postman 时修复丢失
@RequestBody
.将表单转换为json:
https://www.learnwithjason.dev/blog/get-form-values-as-json/
https://medium.com/@mwakatumbula_/code-15ecdb18c2ef型
https://css-tricks.com/snippets/jquery/serialize-form-to-json/