如何在Spring MVC中将数据从一个View传输到另一个View?

时间:2013-03-09 12:22:07

标签: java spring-mvc

应用程序比这更复杂,所以我试图提取代码的相关部分。

Web应用程序的流程是我通过调用selectItemForOrder()方法从列表中选择executionShop。

executionShop的id设置正确。

但是当我按下调用finishOrder()方法的finishOrder按钮时,我得到NullPointerException。我怎么能传输数据,因为我相信控制器类被破坏,当我按下finishOrder按钮时会创建一个新的控制器。

将id保存在数据库中不是一个选项(这是我试图解决的问题)。

对不起,如果这是一个微不足道的问题。我是Spring MVC的新手。

public class MyController {

private Integer executingShopId;

public View selectItemForOrder() {

setExecutingShopId(1);
return View;
}

public View finishOrder() {

System.out.println("Shop id: " + getExecutingShopId());
computeOrder(executingShopId);
return View;
}
}

2 个答案:

答案 0 :(得分:1)

是的,你可以在jsp页面保持id的值 通过使用隐藏字段,如:

<form:hidden path="id"/>

答案 1 :(得分:1)

您是否更改了控制器的配置?对于默认情况,Controller是单例模式,因此您的代码不会导致问题。如果您确实更改了控制器是原型模式的配置,则会导致问题。绝对可以将值存储在隐藏中,但我建议您将值存储在会话中,因为它更有意义且更安全。

public View selectItemForOrder(HttpSession session) {

session.setAttribute(XXXX,YYY);
return View;
}

public View finishOrder(HttpSession session) {
Session.getAttribute(XXXX)
System.out.println("Shop id: " + getExecutingShopId());
computeOrder(executingShopId);
return View;
}