如何将数据从HTML传输到控制器Spring

时间:2017-04-20 09:04:09

标签: java html spring spring-mvc

我使用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>

如何将数据从页面传输到控制器?

感谢您的帮助

2 个答案:

答案 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;