1

私のページには次の行があります。

<af:resource type="javascript" source="JS/google.projected.overlay.js"/>

このリソースを特定の条件でロードする必要があります。条件はEL式で計算できます。だから私は試しました:

<af:panelGroupLayout visible="false" rendered="#{Condition}" id="pgl1">
    <af:resource type="javascript" source="JS/google.projected.overlay.js"/>
</af:panelGroupLayout>

しかし、うまくいきません。私の条件にもかかわらず、スクリプトタグは常にヘッダーセクションのページにレンダリングされます。

誰もこれに対処する方法を知っていますか? それはまったく可能ですか?

4

2 に答える 2

2

ドキュメントにあるように、これに af:resource タグを使用することはできません

リソースは af:document コンポーネントに追加され、ドキュメントのレンダリング時に含まれます。

したがって、レンダリングされた状態はここでは機能しません。このADF JavaScript PartitioningまたはA.9 Using JavaScript Library Partitioningを確認するか、スクリプト・コードをBeanメソッドからページにパイプできます。Bean メソッドで条件を評価すると、必要なときにスクリプトを Bean メソッドからページに追加できます。このために、次のような ExtendedRenderKitService を使用できます

    // queue JavaScript into the page
    FacesContext context = FacesContext.getCurrentInstance();
    ExtendedRenderKitService erks =
    Service.getService(context.getRenderKit(), ExtendedRenderKitService.class);
    String script = "YOUR CODE HERE";
    erks.addScript(context, script);
于 2012-09-12T10:38:29.890 に答える
0

テストはしていませんが、EL を積極的に解決するために render="#{Condition}" を render="${Condition}" に変更するとどうなるでしょうか?

スクリプトがロードされるとブラウザーにキャッシュされることを考えると、それが条件付きかどうかに本当に違いはありますか?

フランク

于 2012-09-12T14:31:34.927 に答える