使用Spring MVC在jsp页面上更改数据

时间:2018-02-22 21:50:58

标签: java spring-mvc web

基本上,我需要在1个jsp页面上显示10个未排序的数组,然后单击按钮后,对它们进行排序并显示10个排序的数组,因此在1页上必须是20个数组(10个排序,10个未排序)。希望我能为您描述清楚。 我使用Spring MVC / JSP。 这是我的home.jsp页面

apiVersion: v1
kind: Pod
metadata:
  name: app
  labels:
    app: app
spec:
  containers:
  - name: app
    image: image
    volumeMounts:
      - mountPath: /mnt
        name: test
    resources:
{{ toYaml .Values.pod.resources | indent 6 }}
  volumes:
  - name: test
    emptyDir: {}

这是我的控制器:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ page session="false" %>
<html>
<head>
	<title>Home</title>
</head>
<body>

<P>   current arrays: <br>
	<c:forEach items="${list}" var="arr">
       <c:forEach items="${arr}" var="elem">
          ${elem} 
       </c:forEach> <br>
    </c:forEach>
  </P>
  
  <br>
    sorted arrays:
  <form:form action = "sort">
  <input type="submit" value="Sort" />
  	<c:forEach items="${sortedList2}" var="arr">
      <c:forEach items="${arr}" var="elem">
          ${elem} 
      </c:forEach> <br>
    </c:forEach>

  </form:form>
</body>
</html>

}

最后这是我的AlgorithmModel,用于执行排序并生成List:

@Controller
public class HomeController {


private AlgorithmModel algo = new AlgorithmModel();

private List<Integer[]> list = algo.getList();

private static final Logger logger = LoggerFactory.getLogger(HomeController.class);


@ModelAttribute("list")
public List<Integer[]> getList() {
return list;
}

@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(ModelMap model) {
return "home";
}

@RequestMapping(value = "/sort", method = RequestMethod.POST)
public String sort(@ModelAttribute("list") ArrayList<Integer[]> list, ModelMap model) {
List<Integer[]> list2 = new ArrayList<Integer[]>(list);
algo.sortList(list2);
model.put("sortedList2", list2);
return "home";
}

所以我认为它应该像这样工作: - 在控制器中我们生成包含10个随机数组的列表 - 使用@ModelAtribute并在页面上拉出此列表 单击按钮并在排序方法中对列表进行排序

但结果我得到: picture

这两个列表都被排序,但第一个列表是shoudnt。 我怎样才能做到这一点? 附:我是Spring MVC中的新手,而且已经浪费了4个小时,因此浪费你的时间。

1 个答案:

答案 0 :(得分:0)

实际上这不是一个spring-mvc问题,而更像是一个Java问题。 你遇到的问题是,即使你在排序之前创建一个新的列表;这两个列表仍然指向同一个Integer数组。您应该从初始列表深度克隆整数数组,并在排序之前使用这个新数组实例创建第二个列表。