2015-11-23 8 views
7

मैं Spring MVC Framework का उपयोग कर रहा हूं और मुझे दृश्य के सभी .jsp पृष्ठों को उपयोगकर्ता के विशेषताओं (नाम, लिंग, आयु ...) तक पहुंच प्राप्त करना है। अब तक, मैं वर्तमान उपयोगकर्ता के गुण View पर पास करने के लिए प्रत्येक नियंत्रक में Model(UI) की addAttribute विधि का उपयोग करता हूं। क्या यह केवल एक बार ऐसा करने का तरीका है और प्रत्येक Controller में एक ही कोड रखने से बचें?मॉडल विशेषता वैश्विक कैसे बनाएं?

+0

इस जवाब में एक नज़र डालें: http://stackoverflow.com/questions/7360784/add-attributes-to-the-model-of-all-controllers-in-spring-3 – dellasavia

+0

यदि मैं ऐसा कहता हूं तो मैं मॉडल एटिब्यूट का उपयोग कैसे करूं? – tony

+0

फिर इसे आज़माएं: http://stackoverflow.com/questions/15758877/how-to-display-model-attribute-in-jsp-using-spring-mvc – dellasavia

उत्तर

11

आप इस तरह एक नया नियंत्रक वर्ग पर वसंत के @ControllerAdvice एनोटेशन का उपयोग कर सकते हैं:

@ControllerAdvice 
public class GlobalControllerAdvice { 

    @ModelAttribute("user") 
    public List<Exercice> populateUser() { 
     User user = /* Get your user from service or security context or elsewhere */; 
     return user; 
    } 
} 

"populateUser" विधि हर अनुरोध पर निष्पादित किया जाएगा और क्योंकि यह एक @ModelAttribute एनोटेशन, का परिणाम है विधि (उपयोगकर्ता) को प्रत्येक अनुरोध के लिए मॉडल में रखा जाएगा।

उपयोगकर्ता के बाद से उस नाम @ModelAttribute करने के लिए दिया था $ {user} का उपयोग कर अपने jsp में उपलब्ध हो जाएगा (उदाहरण: @ModelAttribute ("foobar") -> $ {foobar})

आप कर सकते हैं इस ग्लोबल कंट्रोलर द्वारा कौन से नियंत्रकों की सलाह दी जाती है, यह निर्दिष्ट करने के लिए @ControllerAdvice एनोटेशन को कुछ तर्क दें। उदाहरण के लिए:

@ControllerAdvice(assignableTypes=FooController.class,BarController.class}) 
or 
@ControllerAdvice(basePackages="foo.bar.web.admin","foo.bar.web.management"})) 
+0

मैं jsp में उपयोगकर्ता के गुणों को कैसे एक्सेस करूं? – tony

+0

मैंने इस जानकारी को मेरे उत्तर – wesker317

+0

पर जोड़ा है यदि मैं केवल मॉडल एट्रिब्यूट को जेएसपी पृष्ठों के संग्रह पर उपलब्ध करना चाहता हूं तो क्या होगा? – tony

0

यदि यह उपयोगकर्ता के विशेषताओं के बारे में है, तो आप मॉडल बीन को सत्र में सत्र के रूप में जोड़ सकते हैं जिसे प्रत्येक दृश्य पर पहुंचा जा सकता है। यह केवल एक बार किया जाना चाहिए।

एक और विकल्प हैडलरइंटरसेप्टर को लागू करने के लिए, और प्रत्येक अनुरोध के लिए मॉडल का पर्दाफाश करना हो सकता है।

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