我有一个JSF 2.0 bean:
@ManagedBean
@SessionScoped
public class LoginBean implements Serializable
{
protected String name;
public String getName()
{
return name;
}
//....
}
我有一个Spring 3.0 bean:
@Repository
public class Logins
{
@ManagedProperty(value="#{loginBean}")
protected LoginBean loginBean;
public void recordLogin()
{
//... record in db that loginBean.getName() just logged in
}
}
此代码不起作用,永远不会设置Logins.loginBean。
或者(同样的问题,简化) - 以下代码是否会起作用?
@Repository
public class SpringBean
{
@ManagedProperty(value="#{session.id}")
protected String id;
//....
}
ContextLoaderListener和RequestLoaderListener在web.xml中声明。
是否可以将JSF bean注入Spring bean? (不使用另一个额外的框架)
或者我应该将我的JSF bean转换为Spring bean并使用faces-config.xml中的DelegatingVariableResolver技巧?我已经使用测试Spring bean测试了它,并且它可以工作。
答案 0 :(得分:4)
在spring-managed bean中使用JSF注释不起作用。它不应该 - 你不应该从其他层的Web层注入东西。它应该是另一种方式 - 将弹簧服务(或存储库)注入Web组件(jsf托管bean),并在它们上调用方法,将托管bean属性作为参数传递