2013-03-09 45 views
1

该应用程序比这更复杂,所以我试图提取代码的相关部分。如何在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

你需要做的这个网页上 - 通过发送一个''的 – 2013-03-09 12:23:45

+0

'id'非常感谢你。 – Mythul 2013-03-09 20:25:24

回答

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; 
} 
1

是的,你可以保持使用隐藏域一样维持ID在 jsp页面值:

<form:hidden path="id"/> 
相关问题