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>

但它不起作用。尽管有我的条件,脚本标记始终呈现在 head 部分的页面上。

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

4

2 回答 2

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);
于 2012-09-12T10:38:29.890 回答
0

没有测试它,但是如果你将 render="#{Condition}" 更改为 render="${Condition}" 以进行急切的 EL 解析怎么办?

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

坦率

于 2012-09-12T14:31:34.927 回答