2014-10-07 29 views
6

E 'possibile iniettare un valore in una pagina wicket usando la molla?Come iniettare valori su una pagina wicket usando la molla?

Con @Value è possibile iniettare valori su un bean a molla.

Conosco l'annotazione @SpringBean, ma questa è solo per i bean.

La mia soluzione è di avvolgere il valore con un bean di primavera e quindi iniettarlo con @SpringBean sulla mia pagina wicket. C'è un modo migliore per farlo?

+0

Sì, è possibile utilizzare @Value per iniettare valori. – RishikeshDhokare

+0

@CodeFreak: Sì, per iniettare nei fagioli di primavera, ma non in una pagina di wicket, come ho chiesto. – Cengiz

risposta

1

abbiamo risolto questo problema utilizzando getter & setter nel nostro bambino personalizzato di WebApplication . Questo bambino è un bean Spring standard ed è configurato nella configurazione di Spring.

In caso contrario, è necessario creare un bean "di configurazione".

0

È possibile scrivere un caricatore di risorse Wicket per caricare i valori molla, quindi tali valori verranno risolti come normali messaggi wicket. Se invece è necessario all'interno del corpo della classe wicket fare una qualche logica di business, questa potrebbe essere un'opportunità per ridefinire quella logica al di fuori del livello di vista.

Ecco ciò che il caricatore di risorse appare come:

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; 
     } 
    } 

} 

Poi aggiungere che, per l'applicazione in init():

getResourceSettings().getStringResourceLoaders().add(new SpringPropertiesResourceLoader()); 
Problemi correlati