2009-12-06 17 views
5

मैं बहुत माफी वसंत के नया हूँ के बीच वसंत के साथ राज्य को बनाए रखने अगर यह एक शुरुआती सवाल है, लेकिन मैनुअल स्पष्ट (कम से कम मेरे लिए नहीं)अनुरोध

नहीं है मेरे सवाल यह है: मैं कैसे के बीच स्थिति साझा करते हैं वसंत में अनुरोध? मैं मॉडलमैप का उपयोग करके नियंत्रक से डेटा को दृश्य में भेज सकता हूं, लेकिन मॉडल मैप में डेटा को दृश्य द्वारा अगले नियंत्रक पर वापस नहीं भेजा जाता है। मैं वसंत के साथ यह कैसे कर सकता हूं?

नीचे मेरे स्रोत कोड का एक हिस्सा है। दूसरे नियंत्रक में मॉडलमैप में पहले नियंत्रक में मॉडल मैप में संग्रहीत डेटा नहीं होता है। वसंत में नियंत्रकों के बीच मुझे राज्य को कैसे बनाए रखना चाहिए?

सहायता के लिए बहुत बहुत धन्यवाद।

@RequestMapping(value = "find/something", method = RequestMethod.GET) 
public String foo(@RequestParam("parent") Parent parent, ModelMap modelMap) {  
... 
    modelMap.addAttribute("question_index", 42); 
    modelMap.addAttribute("something", new Something()); 
    modelMap.addAttribute("data", new Data()); 
    return "some/view"; 
} 

<form:form action="bla" method="POST" modelAttribute="data"> 
...// using Something() and 42 
</form:form> 

@RequestMapping(value = "bla", method = RequestMethod.POST)  
public String bla(@ModelAttribute("data") Data data, BindingResult result, ModelMap modelMap) { 
System.out.println(modelMap); // doesn't contain question_index, or something 
} 

उत्तर

0

आमतौर पर (और वसंत के बिना), ऐसा डेटा सर्वलेट सत्र में जाएगा।

+0

या स्टेटफुल EJB में। – duffymo

+0

वेब अनुप्रयोगों के साथ राज्यव्यापी ईजेबी का काम कैसे करें? – Bozho

6

आप या तो HttpSession में मॉडलमैप डाल सकते हैं, या (बड़े अनुप्रयोगों के लिए बेहतर), Spring web flow का उपयोग करें जहां आप तथाकथित बातचीत कर सकते हैं।

+0

मैं अपने नियंत्रकों में HttpSession तक कैसे पहुंच सकता हूं? (मैं Servlets से परिचित हूं लेकिन वसंत के साथ नहीं) – Karl

+0

http://static.springsource.org/spring/docs/2.5.6/reference/mvc.html 13.11.4 – Bozho

+0

देखें [इस] (https] के लिए क्या उपयोग करें : //stackoverflow.com/q/48355807/3425489) परिदृश्य? मेरे खोज मानदंडों पर विचार करें मेरे उदाहरण में 'बीन' है –

4

वसंत में ऐसा करने का सबसे साफ तरीका सत्र-स्कोप्ड वसंत बीन के साथ है। बीन के उदाहरण सत्र के लिए निजी होंगे, और प्रत्येक सत्र शुरू होने पर वसंत द्वारा तत्काल और प्रबंधित किया जाएगा। यह बीन आपकी वार्तालाप स्थिति पकड़ सकता है।

कवर के तहत, यह तंत्र मानक HttpSession विशेषताओं का उपयोग करता है, लेकिन इसका मतलब है कि आपके कोड को HttpSession से सीधे निपटने की ज़रूरत नहीं है, इसलिए यह समग्र रूप से क्लीनर है।

relevant part of the Spring docs (और here) को कॉन्फ़िगर और उपयोग करने के लिए देखें।

-1

इसे स्वयं करें।

<form:form action="bla" method="POST" modelAttribute="data"> 
    <input type="hidden" name="data" value="${data}"/> 
</form:form> 
1

धन्यवाद आपके सुझावों के लिए बहुत कुछ है, मैं यह सत्र-attibutes के रूप में मॉडल मैप के लिए चाबी टैगिंग द्वारा हल:

@SessionAttributes({ "question_index", "something" }) 
@Controller 
public class MyController{ 
... 
} 
+0

बाद के अनुरोधों में आपने इन विशेषताओं को कैसे एक्सेस किया। –

संबंधित मुद्दे