2016-12-08 14 views
0

AEMの基盤コンポーネントは、Java Beanにあまり論理を持たない単なるJSPです。私は今、フォームコンポーネントのJavaロジックをSling Modelsに変換しようとしています。しかし、開始コンポーネントは、2つのことが行われるので簡単ではありません(/libs/foundation/components/form/start/start.jspからコピーされます)。 は、まず:SlingModels:foundationからフォームコンポーネントをビルドする方法(PageContextを挿入する)

FormsHelper.startForm(slingRequest, new JspSlingHttpServletResponseWrapper(pageContext)); 

第二:私はそれからの私のモデルを適応させる際に

componentContext.setDecorate(true); 

slingRequestは、簡単ですが、どこに、私はからpageContextを取得しますか? pageContextで検索できるcomponentContextを取得する必要もあります。

SlingHttpServletRequestて適応しながら、私は次のことを試してみました:

@SlingObject 
private PageContext pc; 
をしかし、これは動作しません。

EDIT:

私はのpageContextせずにフォームの開始・コンポーネントを作成する方法を考え出しました。一緒にフォームの開始とが、フォームの終わりがあり、そのまま(/libs/foundation/components/form/end/end.jspからコピー)のpageContextを使用して一つの部分があり

final boolean isSubmittable = FormsHelper.checkRule(resource, slingRequest, pageContext, "submittableRule"); 
if (isSubmittable || isEditMode) { 

このブール値は、それがレンダリングする前にチェックされているという理由のためであるか、どのようなわかりませんボタン。

したがって、私はpageContextを注入する方法が必要ですか、またはこのフォームコンポーネントをSling Modelsで構築する別の方法が必要です。

+0

を使用することができます(あなたがやろうとしている方法PAGECONTEXT注入)、同じアプローチを実行する必要はありません - 。のpageContextはできませんJSPなしで作成できます。私はこれについて100%確信していません。 – awd

+0

@awadheshv SlingModelsが利用可能になる前に、自分のAnnotaionsの試行でそれをやりました。カスタムタグでのみ動作しますが、スリング:adaptToタグはカスタムタグであるため、そこに挿入することができます。しかし、おそらくそれはAdobeからのものであり、PageContextが利用できないSightlyテンプレートエンジン(JSPなし)を宣伝したいからです。 – Thomas

答えて

1

あなたは、必ずしもあなたがjavadocsを見れば、あなたは、私はその可能性はないと思うstartForm(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException, ServletException

+0

ありがとう、私はいくつかの試行錯誤の後でこれを理解しました。私はラッパーが必要だと思った。そうでなければ、応答は早い時期にコミットされるだろう。また、WCMUtilsを介してcomponentContextを取得できることもわかりました。フォームの最後のコンポーネントにもう1つのpageContextリファレンスがあるので質問を変更する必要がありますが、今は取り除くことができませんでした。 – Thomas

関連する問題