相关文章推荐
天涯  ·  解决AttributeError: ...·  11 月前    · 
另类的牙膏  ·  Amazon Live·  1 年前    · 

昨天学校项目里要做个功能,是要在前端定义一条折线端,然后提交到后台存进数据库里。

折线段的话其实就是不定数量的一些点坐标,第一反应就是用Form提交一个Point 的List,后台也用List接收,然而却发现SpringMVC 不能直接接收List,需要做一点变动。

学校的代码不好贴出来,我单独写个例子演示一下

前端页面这样写

<!DOCTYPE html>

<html lang="en">

<meta charset="UTF-8">

<title>Title</title>

</head>

<form action="test" method="post" enctype="application/x-www-form-urlencoded">

<table>

<td><input type="text" name="points[0].x"/></td>

<td><input type="text" name="points[0].y"/></td>

<td><input type="text" name="points[1].x"/></td>

<td><input type="text" name="points[1].y"/></td>

<td><input type="text" name="points[2].x"/></td>

<td><input type="text" name="points[2].y"/></td>

<input type="submit" value="Submit">

</table>

</form>

</body>

</html>

public class Point {

private Integer x;

private Integer y;

public Integer getX() {

return x;

public void setX(Integer x) {

this.x = x;

public Integer getY() {

return y;

public void setY(Integer y) {

this.y = y;

实体类集合封装类,这里是个技巧了,SpringMVC不能用List接收,但可以用包装了List成员的对象接收

public class PointModel {

private List<Point> points;

public List<Point> getPoints() {

return points;

public void setPoints(List<Point> points) {

this.points = points;

控制器,就跟平常没啥两样了

@Controller

public class PointController {

@PostMapping("/test")

@ResponseBody

public String testPost(PointModel pointModel){

System.out.println(JSON.toJSONString(pointModel));

return JSON.toJSONString(pointModel);

@GetMapping("/test")

public String testGet(Model model){

return "test";

我们先用PostMan 测试一下后台好不好用

可以看到提交成功了,form-data 和x-www-form-urlencoded 都是可以的

我们再用页面POST一下试试

返回的结果与PostMan一致,这里我浏览器上装了JSON-handle,所以是这种格式

下次需要提交数组类型的数据就可以这么做啦,做个笔记。 返回搜狐,查看更多

责任编辑:

声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。