2010-09-01 14 views
15

संक्षेप में, मैं कुछ की तरह चाहते हैंकैसे स्प्रिंग MVC के साथ विधि तर्क (पैरामीटर) के रूप में एक सत्र विशेषता पारित करने के लिए

  • पठनीयता
  • इकाई परीक्षण
+0

संबंधित: http://stackoverflow.com/questions/2213974/spring-mvc-session-attribute-access – Bozho

+0

सत्र-स्कोप बीन्स आपको क्या चाहिए? – skaffman

+0

संख्या। मैं उन्हें विधि पैरामीटर के रूप में कैसे पास करूंगा? और मैं उन्हें इंजेक्ट नहीं कर सकता, क्योंकि नियंत्रक सिंगलटन है। – Bozho

उत्तर

19

मुझे solution मिला।

विचार AnnotationMethodHandlerAdapter है, जो एक कस्टम एनोटेशन संभालती के लिए एक कस्टम WebArgumentResolver रजिस्टर करने के लिए है - @SessionAttribute (या @SessionParam)।

पोस्ट किए गए कोड पर एक नोट यह है कि param.getParameterName() का उपयोग किया जा सकता है यदि value निर्दिष्ट नहीं है।

+0

क्या होगा यदि आपके पास @SessionAttribute (आवश्यक = झूठा) उपयोगकर्ता उपयोगकर्ता है। एक स्ट्रिंग के रूप में लौटाया गया डिफ़ॉल्ट मान उपयोगकर्ता के साथ मेल नहीं खाता है। क्या आप इसे किसी भी तरह प्रबंधित कर सकते हैं? – mickthompson

+0

आप रिज़ॉल्वर में कुछ भी प्रबंधित कर सकते हैं। :) – Bozho

0

भले ही हम @ModelAttribute ("user") उपयोगकर्ता उपयोगकर्ता को विधि पैरामीटर के रूप में उपयोग करते हैं और फिर अपनी विधि में उपयोगकर्ता ऑब्जेक्ट का उपयोग करते हैं, तो यह सत्र से उपयोगकर्ता को अपडेट करेगा। विशेषता नाम को सत्र विशेषता नाम "उपयोगकर्ता" से मेल खाना है।

public String myMethod(@ModelAttribute("user") User user){ 

System.out.println(user.getDetails()); 

} 
3

गूगल के जरिये पहुंचने वालों के लिए, कम से कम 4.3.2.RELEASE के रूप में, वसंत शामिल एक @SessionAttribute एनोटेशन निर्मित:

public String action(
    @SessionAttribute(required=false, name="user") User user) { 

    // ... 

} 

एक कस्टम समाधान आवश्यक नहीं रह गया है।

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