@ सत्र एट्रिब्यूट्स को किस सटीक परिस्थितियों में मंजूरी मिलती है? किसी पृष्ठ में दो मॉडल का उपयोग करने का प्रयास करते समय मुझे कुछ भ्रमित व्यवहार की खोज हुई है।स्प्रिंगएमवीसी में @ सत्र एट्रिब्यूट कब हटाया जाता है? (कोड नमूना के साथ)
जब मैं एक इस नियंत्रक का उपयोग कर एक पोस्ट के बाद मिलता है ...
@Controller
@RequestMapping("/myPage*")
@SessionAttributes(value = {"object1", "object2"})
public class MyController {
@RequestMapping(method = RequestMethod.GET)
public String get(Model model) {
model.addAttribute("object1", new Object1());
model.addAttribute("object2", new Object2());
return "myPage";
}
@RequestMapping(method = RequestMethod.POST)
public String post(@ModelAttribute(value = "object1") Object1 object1) {
//do something with object1
return "myPage";
}
}
... object2 मॉडल से साफ़ हो जाता है। यह अब @ सत्र एट्रिब्यूट के रूप में मौजूद नहीं है और मेरे दृश्य पृष्ठ पर नहीं पहुंचा जा सकता है।
लेकिन अगर दूसरी विधि के हस्ताक्षर इस के लिए संशोधित किया गया है ...
public String post(@ModelAttribute(value = "object1") Object1 object1,
@ModelAttribute(value = "object2") Object2 object2) {
... तो object2 मॉडल से मंजूरी दे दी नहीं प्राप्त करता है और मेरे विचार पृष्ठ पर उपलब्ध है।
@SessionAttributes के लिए जावाडोक का कहना है:
... गुण एक बार हटा दिया जाएगा हैंडलर अपने संवादी सत्र के पूरा होने का संकेत है।
लेकिन मुझे नहीं लगता कि मैंने पहले उदाहरण में बातचीत सत्र के पूरा होने का संकेत दिया है, लेकिन दूसरे उदाहरण में नहीं।
क्या कोई इस व्यवहार को समझा सकता है या यह एक बग है?
यह समस्या अब वसंत 3.0rc1 में हल किया गया है। Http://jira.springsource.org/browse/SPR-6084 धन्यवाद जुर्गेन देखें! –