簡體   English   中英

ADF:有條件地加載 javascript 資源

[英]ADF: Load javascript resources conditionally

我的頁面上有以下行:

<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>

但它不起作用。 不管我的條件如何,腳本標簽總是呈現在頁面的頭部部分。

有誰知道如何處理這個問題? 有可能嗎?

正如文檔所說,您不能為此使用 af:resource 標簽

資源被添加到 af:document 組件以在呈現文檔時包含。

所以渲染條件不會在這里播放。 您可以查看這個ADF JavaScript PartitioningA.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);

沒有對其進行測試,但是如果您將 render="#{Condition}" 更改為 render="${Condition}" 以實現急切的 EL 解析怎么辦?

鑒於腳本一旦加載就緩存在瀏覽器上,如果它是有條件的,它真的會有所不同嗎?

坦率

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM