我正在尝试编写一个自定义servlet (用于AJAX/JSON),在其中我希望通过名称引用我的@ManagedBeans
。我希望映射到:
http://host/app/myBean/myProperty
至:
@ManagedBean(name="myBean")
public class MyBean {
public String getMyProperty();
}
可以从常规的servlet按名称加载bean吗?有没有我可以使用的JSF servlet或helper?
我似乎被Spring宠坏了,在Spring中,所有这些都太明显了。
发布于 2012-12-11 02:10:30
我使用以下方法:
public static <T> T getBean(final String beanName, final Class<T> clazz) {
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
return (T) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, beanName);
}
这允许我以类型化的方式获取返回的对象。
发布于 2010-04-14 05:10:02
你有没有在这个链接上尝试过类似的方法?我不确定createValueBinding()
是否仍然可用,但是像这样的代码应该可以从普通的旧Servlet访问。这确实要求bean已经存在。
http://www.coderanch.com/t/211706/JSF/java/access-managed-bean-JSF-from
FacesContext context = FacesContext.getCurrentInstance();
Application app = context.getApplication();
// May be deprecated
ValueBinding binding = app.createValueBinding("#{" + expr + "}");
Object value = binding.getValue(context);
发布于 2014-07-30 03:50:19
您可以通过传递以下名称来获取托管bean:
public static Object getBean(String beanName){
Object bean = null;
FacesContext fc = FacesContext.getCurrentInstance();
if(fc!=null){
ELContext elContext = fc.getELContext();
bean = elContext.getELResolver().getValue(elContext, null, beanName);
}
return bean;
}
https://stackoverflow.com/questions/2633112
复制相似问题