Guiceを使用してJSFマネージドBeanのプロパティを注入しようとしています。これはすべてGoogleAppEngineで実行されています(重要な場合と重要でない場合があります)
私はここの指示に従いました:
http://code.google.com/docreader/#p=google-guice&s=google-guice&t=GoogleAppEngine
1つの問題は最初のステップにあります。FacesはHttpServletではなくサーブレットをサブクラス化するjavax.faces.webapp.FacesServletによって処理されるため、サーブレットモジュールをサブクラス化してそこにサーブレットマッピングを設定することはできません。そこで、2番目のステップで説明したコンテキストリスナーでインジェクターを作成するときに、サーブレット構成を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を作成するために引数なしのコンストラクターを必要とするため、コンストラクターインジェクションを使用できないことは明らかです。