我的页面上有以下行:
<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>
但它不起作用。尽管我有条件,脚本标签总是在头部的页面上呈现。
有谁知道如何处理这个问题?它有可能吗?
答案 0 :(得分: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);
答案 1 :(得分:0)
没有经过测试,但是如果你将渲染=“#{条件}”更改为渲染=“$ {条件}”以进行急切的EL解析怎么办?
鉴于脚本在加载后缓存在浏览器上,如果它是有条件的,它真的会有所不同吗?
谢