2014-10-07 6 views
6

वसंत का उपयोग कर विकेट पेज पर एक मूल्य इंजेक्ट करना संभव है?वसंत का उपयोग कर विकेट पेज पर मूल्य कैसे इंजेक्ट करें?

@Value के साथ वसंत बीन के मूल्यों को इंजेक्ट करना संभव है।

मुझे @SpringBean एनोटेशन पता है, लेकिन यह केवल बीन्स के लिए है।

मेरा कामकाज एक वसंत बीन के साथ मूल्य लपेटना है और फिर @SpringBean के साथ मेरे विकेट पेज पर इंजेक्ट करना है। क्या ऐसा करने के लिए इससे अच्छा तरीका है?

+0

हां, आप मूल्यों को इंजेक्ट करने के लिए @ वैल्यू का उपयोग कर सकते हैं। – RishikeshDhokare

+0

@CodeFreak: हाँ, वसंत सेम में इंजेक्ट करने के लिए, लेकिन एक विकेट पेज में नहीं, जैसा मैंने पूछा था। – Cengiz

उत्तर

1

हम इस समस्या WebApplication के हमारे कस्टम बच्चे में गेटर & सेटर का उपयोग कर हल कर लिया है

यहाँ संसाधन लोडर कैसा दिखता है । यह बच्चा मानक वसंत बीन है और वसंत की कॉन्फ़िगरेशन में कॉन्फ़िगर किया गया है।

अन्यथा आपको कुछ "कॉन्फ़िगरेशन" बीन बनाना होगा।

0

आप वसंत मूल्यों को लोड करने के लिए एक विकेट संसाधन लोडर लिख सकते हैं, और फिर उन मूल्यों को नियमित विकेट संदेशों की तरह हल किया जाएगा। यदि इसके बजाय आपको कुछ व्यावसायिक तर्क करने के लिए विकेट वर्ग के शरीर के भीतर इसकी आवश्यकता है, तो यह दृश्य परत के बाहर उस तर्क को दोबारा करने का अवसर हो सकता है।

public class SpringPropertiesResourceLoader 
    implements IStringResourceLoader 
{ 

    public SpringPropertiesResourceLoader() 
    { 

    } 

    @Override 
    public String loadStringResource(Class<?> clazz, String key, Locale locale, String style, String variation) 
    { 
     return loadStringResource(key); 
    } 

    @Override 
    public String loadStringResource(Component component, String key, Locale locale, String style, String variation) 
    { 
     return loadStringResource(key); 
    } 

    private String loadStringResource(String key) 
    { 
     try 
     { 
      ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(WebPortalApplication.get().getServletContext()); 
      ConfigurableBeanFactory beanFactory = (ConfigurableBeanFactory)applicationContext.getAutowireCapableBeanFactory(); 
      String rv = beanFactory.resolveEmbeddedValue("${" + key + "}"); 
      return rv; 
     } 
     catch (IllegalArgumentException iae) 
     { 
      // no property with the name - move along 
      return null; 
     } 
    } 

} 

फिर init() में अपने आवेदन करने के लिए कि जोड़ें::

getResourceSettings().getStringResourceLoaders().add(new SpringPropertiesResourceLoader()); 
संबंधित मुद्दे