我一直在研究一种工具,我需要通过HTML表单提交数据。此数据将通过XMLHttpRequest()
在vanilla JavaScript中发送。
反过来,这将由Java REST API(基于Jersey)接收。
在我的Java @POST
函数中,我接受参数@Context HttpServletRequest request
。
我能够通过POSTMAN(JSON格式)发送Request有效负载。我在互联网上研究了很多,但无法弄清楚如何让我的HTML表单发送请求有效负载。我不想使用@FormParam
,因为表单数据总是会变化,参数不固定。
Java函数:
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Response create(@Context HttpServletRequest request) {
Integer userId = null;
try {
String content = readPostBody(request);
System.out.println("Content: " + content);
User user = mapper.readValue(content, User.class);
userId = dao.create(user);
} catch (ServletException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (userId == null) {
return Response.status(500).entity("User could not be created!!").build();
} else {
return Response.status(200).entity(userId.toString()).build();
}
}
HTML表单:
<div class="container">
<div class="row" style="margin-top: 50px;">
<form action="" method="post" id="form-data">
<input type="text" id="firstName" placeholder="First Name"><br>
<input type="text" id="lastName" placeholder="Last Name"><br>
<button class="btn btn-submit" onclick="createUser()">Submit</button>
</form>
</div>
</div>
JavaScript:在这里尝试几件事,但这是我正在寻找的解决方案。
有人可以建议一些更有效的方法吗?否则,我将不得不修改REST API来读取我认为不是很好的编码实践的每个参数。