我正在尝试使用 Guice 注入 JSF 托管 bean 的属性。这一切都在 Google App Engine 上运行(这可能很重要,也可能不重要)
我已按照此处的说明进行操作:
http://code.google.com/docreader/#p=google-guice&s=google-guice&t=GoogleAppEngine
一个问题在于第一步。我不能子类化 Servlet 模块并在那里设置我的 servlet 映射,因为 Faces 由 javax.faces.webapp.FacesServlet 处理,该 javax.faces.webapp.FacesServlet 是 Servlet 的子类,而不是 HttpServlet。因此,我尝试将我的 servlet 配置留在 web.xml 文件中,并在第二步中描述的上下文侦听器中创建注入器时简单地实例化一个新的 ServletModel() 以及我的业务模块。
完成所有这些之后,连同 web.xml 配置,我的托管 bean 没有注入任何属性。方法如下
@ManagedBean
@ViewScoped
public class ViewTables implements Serializable
{
private DataService<Table> service;
@Inject
public void setService( DataService<Table> service )
{
this.service = service;
}
public List<Table> getTables()
{
return service.getAll();
}
}
所以,我想知道是否有让 Guice 注入 JSF 托管 bean 的技巧?我显然不能使用构造函数注入,因为 JSF 需要一个无参数构造函数来创建 bean。