È 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());
fonte
2014-10-13 18:18:11
Sì, è possibile utilizzare @Value per iniettare valori. – RishikeshDhokare
@CodeFreak: Sì, per iniettare nei fagioli di primavera, ma non in una pagina di wicket, come ho chiesto. – Cengiz