CDIとJSF2を使用する場合HTTPリクエストパラメータをBeanにどのように注入できますか?CDIとJSF2による依存性注入要求パラメータ
答えて
ヒント:さらに読む前にhttp://showcase.omnifaces.org/components/paramをご覧ください。 今日、事実上の標準がどのように全世界が標準であるかを見ると、おそらく時代遅れです。私はおそらくこれを書いたことはありませんが、時にはこれがあれば
CDIはリクエストパラメータの注入などの特殊な問題を解決しません。それは拡張機能によって解決されるはずです。
これははんだによって既に提供されています。 http://docs.jboss.org/seam/3/solder/latest/reference/en-US/html/injectablerefs.html
おそらくDeltaspike 0.4-インキュベーションまたはそれに類するものに含まれるであろう。
これは、必要なコードは自分で実装するのが簡単だと言っています。以下の例:
注釈(たとえばprivate String myParam;
のために)注入点のため
import javax.enterprise.util.Nonbinding;
import javax.inject.Qualifier;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Qualifier
@Retention(RUNTIME)
@Target({METHOD, FIELD, PARAMETER })
public @interface RequestParam {
@Nonbinding
public String value() default "";
}
を使用するには、今、私たちは、アノテーションを持っているが、我々はちょうど@RequestParam
を注入依存性の容器を求めることはできません - 私たちは明らかに必要実装。
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
public class RequestParamProducer implements Serializable {
private static final long serialVersionUID = -4260202951977249652L;
@Inject
FacesContext facesContext;
// Producer for @RequestParam
@Produces
@RequestParam
String getRequestParameter(InjectionPoint ip) {
String name = ip.getAnnotated().getAnnotation(RequestParam.class)
.value();
if ("".equals(name))
name = ip.getMember().getName();
return facesContext.getExternalContext().getRequestParameterMap()
.get(name);
}
}
どのように機能しますか?まず、あなたが望むパラメータを@Requestparam("longAndTerribleFieldNameBestToSpecify")
のように指定したかどうかを最初に確認します。
フィールド名を使用しない場合は、fieldNameを使用します。 setMyInstanceという名前のsetterをアノテーションした場合、setMyInstanceというパラメータが検索されます。
通常の使用例では、必要なパラメータとまったく同じ名前のString変数を使用します。
生成する必要があるFacesContextを挿入することに注意してください。
class FacesContextProducer {
@Produces @RequestScoped FacesContext getFacesContext() {
return FacesContext.getCurrentInstance();
}
}
エンド用法:それはのFacesContextへのアクセスを必要として、これはサーブレットまたは類似のために動作しないことに
@Inject
@RequestParam
private String session_secret;
ノートのFacesContextプロデューサーは、次のようになります。そのような場合、@RequesScopedなどのBeanなどで注入をラップする必要があります。代わりにそのBeanを注入します。
- 1. 依存性注入要求ごとのコンテナ
- 2. JSF2マネージドBean参照問題:CDI注入?
- 3. CA2000と依存性注入
- 4. アダプターと依存性注入
- 5. WCFと依存性注入
- 6. 依存性注入とModelStateWrapper
- 7. 依存性注入
- 8. UrlHelperによる依存性注入
- 9. Zend Framework依存性注入対Symfony2依存性注入
- 10. 依存性注入を使用した依存性注入器の注入
- 11. Symfony 2:依存性注入と特性
- 12. Wcf依存性注入
- 13. 春の依存性注入
- 14. ASP.NETモジュール依存性注入
- 15. 依存性注入ライフサイクル
- 16. PHPファクトリパターン依存性注入
- 17. カスタムResourceProviderFactory依存性注入
- 18. Groovyの依存性注入
- 19. MVCの依存性注入
- 20. 春:セッター依存性注入
- 21. 依存性注入コンテナ
- 22. 依存性の注入
- 23. Windowsサービス依存性注入
- 24. 依存性注入Laravel
- 25. データアクセス、ユニットテスト、依存性注入
- 26. MSTest TestMethod依存性注入
- 27. XPCOMの依存性注入
- 28. angularjs - ランタイム依存性注入?
- 29. 依存性注入Grails Webflow
- 30. コンストラクターの依存性注入