ADF:有条件地加载javascript资源

ADF: Load javascript resources conditionally

本文关键字:javascript 资源 加载 有条件 ADF      更新时间:2023-09-26

我的页面上有以下行:

<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标签,因为文档说

当则呈现文档。

所以渲染的条件不会在这里发挥作用。你可以去看看这个ADF JavaScript Partitioning或A.9 Using JavaScriptLibrary 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);

在没有测试过它的情况下,但如果您将rendered="#{Condition}"更改为rendered="${Condition}"以进行急切的EL解析,该怎么办?

假设scrip一旦加载就缓存在浏览器上,那么它是否有条件真的有区别吗?

Frank