2014-10-07 20 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()); 
相关问题