2014-10-07 19 views
6

是否可以使用spring將值注入到wicket頁面?如何使用spring將值注入到wicket頁面?

隨着@Value它可以注入到spring bean的值。

我知道@SpringBean註釋,但這隻適用於bean。

我的解決方法是用spring bean包裝這個值,然後用@SpringBean將其注入我的檢票頁。有一個更好的方法嗎?

+0

是的,您可以使用@Value來注入值。 – RishikeshDhokare 2014-10-12 09:58:12

+0

@CodeFreak:是的,注入春豆,但沒有進入檢票口頁面,就像我問。 – Cengiz 2014-12-02 20:47:02

回答

1

我們已經解決了使用getter &二傳手在我們的WebApplication定製的孩子這個問題。這個孩子是標準的Spring bean,並且在Spring的配置中配置。

否則,你必須創建一些「配置」bean。

0

您可以編寫一個Wicket資源加載器來加載彈簧值,然後這些值將像常規的Wicket消息一樣被解析。相反,如果您需要在檢票類的主體內部執行某些業務邏輯,那麼這可能是重構視圖層以外的邏輯的一個機會。

這裏的資源加載器是什麼樣子:

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()); 
相關問題