簡體   English   中英

使用Spring MVC更改jsp頁面上的數據

[英]changing data on jsp page using Spring MVC

基本上,我需要在1個jsp頁面上顯示10個未排序的數組,然后在單擊按鈕后對其進行排序並顯示10個排序的數組,因此在一頁上必須是20個數組(十個排序和十個未排序)。 希望我能為您描述清楚。 我正在使用Spring MVC / JSP。 這是我的home.jsp頁面

 <%@ 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> 

這是我的控制器:

@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";
}

}

最后是我的AlgorithmModel,用於執行排序並生成List:

public class AlgorithmModel {
private Random random = new Random();
private List<Integer[]> list = new ArrayList<Integer[]>();

private List<Integer[]> randomGenerate() {
List<Integer[]> list = new ArrayList<Integer[]>();
int size = 5;
for (int i = 0; i < 10; i++) {
    list.add(generateArr(size));
    size++;
}
return list;
}

private Integer[] generateArr(int n) {
Integer[] arr = new Integer[n];
for (int i = 0; i < arr.length; i++) {
    arr[i] = random.nextInt(101);
}
return arr;
}

public AlgorithmModel() {
list = randomGenerate();
}

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

public void sortList(List<Integer[]> list) {
for (Integer[] integers : list) {
    sort(integers);
}
}

private void sort(Integer[] arr) {
  //some sort algorithm
}
}

因此,我認為它應該像這樣工作:-在控制器中,我們生成帶有10個隨機數組的列表-使用@ModelAtribute並將此列表拉到頁面上-單擊按鈕並在sort方法中對列表進行排序

但結果我得到: 圖片

這兩個列表都進行了排序,但是第一個應該簡單。 我該如何工作? PS是Spring MVC的新功能,並且已經浪費了4個小時,所以很浪費您的時間。

實際上,這不是spring-mvc問題,而更像是Java問題。 您遇到的問題是,即使您在排序之前就創建了一個新列表; 兩個列表仍然指向相同的Integer數組。 您應該從初始列表中深度克隆您的整數數組,並在排序之前使用此新數組實例創建第二個列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM