是否可以使用spring将值注入到wicket页面?如何使用spring将值注入到wicket页面?
随着@Value
它可以注入到spring bean的值。
我知道@SpringBean
注释,但这只适用于bean。
我的解决方法是用spring bean包装这个值,然后用@SpringBean
将其注入我的检票页。有一个更好的方法吗?
是否可以使用spring将值注入到wicket页面?如何使用spring将值注入到wicket页面?
随着@Value
它可以注入到spring bean的值。
我知道@SpringBean
注释,但这只适用于bean。
我的解决方法是用spring bean包装这个值,然后用@SpringBean
将其注入我的检票页。有一个更好的方法吗?
我们已经解决了使用getter &二传手在我们的WebApplication
定制的孩子这个问题。这个孩子是标准的Spring bean,并且在Spring的配置中配置。
否则,你必须创建一些“配置”bean。
您可以编写一个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());
是的,您可以使用@Value来注入值。 – RishikeshDhokare 2014-10-12 09:58:12
@CodeFreak:是的,注入春豆,但没有进入检票口页面,就像我问。 – Cengiz 2014-12-02 20:47:02