ADF:有条件地加载javascript资源

时间:2012-09-12 09:21:14

标签: javascript oracle-adf

我的页面上有以下行:

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

但它不起作用。尽管我有条件,脚本标签总是在头部的页面上呈现。

有谁知道如何处理这个问题?它有可能吗?

2 个答案:

答案 0 :(得分:2)

您不能使用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);

答案 1 :(得分:0)

没有经过测试,但是如果你将渲染=“#{条件}”更改为渲染=“$ {条件}”以进行急切的EL解析怎么办?

鉴于脚本在加载后缓存在浏览器上,如果它是有条件的,它真的会有所不同吗?