2014-10-07 18 views
6

Yay kullanarak bir telli sayfaya bir değer enjekte edilebilir mi?İlkbahar kullanılarak bir ayar sayfaya nasıl değerler enjekte edilir?

@Value ile, bir yay fasulyesi için değerler enjekte edilebilir.

@SpringBean ek açıklamasını biliyorum, ancak bu yalnızca fasulyeler içindir.

Çözümüm, değeri bir kaynak fasulyesi ile sarmak ve daha sonra bunu @SpringBean no'lu tel kafes sayfama enjekte etmektir. Bunu yapmanın daha iyi bir yolu var mı?

+0

Evet, değerleri enjekte etmek için @Value öğesini kullanabilirsiniz. – RishikeshDhokare

+0

@CodeFreak: Evet, bahar fasulyesi içine enjekte etmek için değil, bir wicket sayfasına değil, sorduğum gibi. – Cengiz

cevap

1

Biz WebApplication bizim özel çocukta alıcı & ayarlayıcı kullanarak bu sorunu çözmüş İşte

kaynak yükleyici gibi görünür . Bu çocuk standart Yay fasulyesidir ve yay yapılandırmasında yapılandırılmıştır. Aksi halde "config" fasülyesi oluşturmanız gerekir.

0

Yay değerleri yüklemek için bir Wicket kaynak yükleyicisi yazabilir ve daha sonra bu değerler normal küme mesajları gibi giderilecektir. Bunun yerine, bazı iş mantığını yapmak için küçük sınıfın gövdesine ihtiyacınız varsa, bu mantığı görüntü katmanının dışında yeniden düzenlemek için bir fırsat olabilir.

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

} 

Ardından init() içindeki uygulamanıza eklemek:

getResourceSettings().getStringResourceLoaders().add(new SpringPropertiesResourceLoader()); 
İlgili konular