2013-03-09 67 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"/> 
相關問題