我想创建一个自定义 el 函数以快速从 dao 中选择选项。我正在使用 Spring,我想在我的自定义 el 函数类中注入 spring bean dao。
在 el 函数类中,我使用静态方法,并且无法访问应用程序上下文。我以这种方式使用了 ApplicationContextAware 的实现
public class AppContextUtil implements ApplicationContextAware
{
private ApplicationContext applicationContext;
private static final AppContextUtil instance=new AppContextUtil();
private AppContextUtil()
{
}
public static AppContextUtil getInstance()
{
return instance;
}
public <T> T getBean(Class<T> clazz)
{
return applicationContext.getBean(clazz);
}
/**
* {@inheritDoc}
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
{
this.applicationContext = applicationContext;
}
}
但 applicationContext 为空。
访问 applicationContext 的唯一方法是 belove
WebApplicationContext appCtx =
WebApplicationContextUtils.getWebApplicationContext(context.getServletContext());
MyDAO myDAO = appCtx.getBean(MyDAO.class);
但是这样我需要在 el 函数参数中传递 PageContext。
我如何创建一个支持 Spring bean 的 el 函数类?我如何以静态方式访问 applicationContext?
谢谢你。