我使用Spring Boot。 我没有web.xml和jsp文件
我有一个控制器来处理数据并将其写入数据库。
@RequestMapping(value = "/registration", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ApiOperation(value = "Registration user", response = Account.class)
public AccountDto registration(@Valid @RequestBody RegistrationDto registration, HttpServletResponse response) {
Account account = new Account(registration.getEmail(), registration.getPassword());
return new AccountDto(account);
}
我在Swagger的帮助下检查了控制器。
我有一个HTML页面,用户可以在其中输入数据。
<body>
<h1 th:inline="text">Please register</h1>
<form th:action="@{/logout}" method="post">
<div>
<label>
E-mail:<input type="email" name="email"/>
Password:<input type="password" name="password"/>
</label>
</div>
<input type="submit" name="registration" value="Registration"/>
</form>
</body>
如何将数据从页面传输到控制器?
感谢您的帮助
答案 0 :(得分:1)
这取决于您在客户端(浏览器)和服务器之间进行调用所使用的内容 我会通过使用JQuery并执行类似的操作来使用AJAX调用
var dataObj = new Object();
dataObj.email = $("#email").val();
dataObj.password = $("#passord").val();
$.ajax({
url : '/registration',
dataType : 'json',
contentType : 'application/json; charset=UTF-8',
type : 'POST',
data: JSON.stringify(dataObj),
beforeSend : function(){
//do something before send (e.g. show a message like: please wait)
});
},
complete : function(){
//do something after sent (e.g. remove the message please wait)
},
success : function(data) {
//handle the success response
},
error : function(data) {
//handle the error response
}
});
我希望它有用
安吉洛
修改强>
为了提交数据,你可以用这种方式向提交添加一个监听器(总是使用JQuery)
//This is called after the DOM is fully loaded
$(function() {
$("#mySubmitId").click(function(evt){
//Prevent the default submit
evt.preventDefault();
//call the submit funtion
submitData();
});
});
function submitData()
{
var dataObj = new Object();
dataObj.email = $("#email").val();
dataObj.password = $("#passord").val();
$.ajax({
url : '/registration',
dataType : 'json',
contentType : 'application/json; charset=UTF-8',
type : 'POST',
data: JSON.stringify(dataObj),
beforeSend : function(){
//do something before send (e.g. show a message like: please wait)
});
},
complete : function(){
//do something after sent (e.g. remove the message please wait)
},
success : function(data) {
//handle the success response
},
error : function(data) {
//handle the error response
}
});
}
安吉洛
答案 1 :(得分:0)
提交表单时,会收集表单数据。它获取所有输入控件 - 输入,文本,选择,复选框等,并发送所有输入的内容。
在您按下提交按钮的情况下,必须发送数据。您的表单操作为/logout
,但控制器需要/registration
更改操作。
同时检查RegistrationDto
是否包含电子邮件和密码字段以获取已发送的数据。
正如@Zorglube在评论中提到的那样尝试删除consumes
并且还应该验证表单是否具有属性th:object =&#34; registration&#34;