不要在第一次加载Oracle ADF时加载表

时间:2016-10-06 22:10:22

标签: oracle oracle-adf

每当我的页面出现时,它都会执行表查询。我试过这样做,

https://blogs.oracle.com/shay/entry/preventing_queries_when_page_f

但它仍然会发生。我怎样才能解决这个问题?我已经尝试将刷新条件设置为never,但后来我无法获取任何数据。我正在使用JDev 11g。

感谢。

3 个答案:

答案 0 :(得分:2)

我可以在JDeveloper 12.1中分享我是如何做到这一点的。我不确定它是否适用于11g。我也不确定这是最好的方法。但它对我有用。

这个想法是不阻止初始查询执行,而是确保它快速发生并且不返回任何数据。方法是在应用程序模块的View Instance中设置初始查询条件。

此方法假定您的视图对象中至少有一个绑定变量。如果不这样做,则需要为此添加一个。

  • 双击“应用程序模块”
  • 点击"概述"底部的标签
  • 点击"数据模型"左侧的选项卡,以便您查看应用程序模块的数据模型组件
  • 在"数据模型"在右侧的树上,单击View Object Usage(" MyObjectVO1",例如)。
  • 点击"编辑..."在数据模型树的右上角。

在这里,您可以指定最初用于页面的视图条件。所以, *设置一个初始参数,它将(A)快速执行,(B)不返回数据

然后,稍后,当您准备好运行查询时,以编程方式重置绑定变量以更正将返回数据的值。

答案 1 :(得分:1)

我知道的最简单的方法是正确设置"刷新"页面定义中迭代器上的属性。 为此,设置refresh = ifNeeded,然后使用表达式语言设置RefreshCondition,如下所示:#{viewScope.yourBean.refresh}

public class YourBeanClass {

    private boolean refresh = false;

    public void someAction(ActionEvent actionEvent) {
       //some custom logic to set refresh flag
       refresh = true;
    }

    public boolean isRefresh() {
        return refresh();
    }
}

使用此代码,您可以简单地管理需要刷新模型的时刻。

答案 2 :(得分:0)

虽然这些解决方案可以阻止查询执行,但我会问用户看到某个表在网页上显示而没有先搜索的用例是什么?

ADF是为了自动查询而构建的,因为通常网页上会有一个af:query或af:quickquery组件,允许用户输入查询。执行查询后,将返回结果并填充表或表单(具体取决于页面设计)。在页面上包含这些搜索组件之一将阻止页面执行查询,直到执行搜索。您还可以使用任务流在页面条目上执行查询,并在进入页面之前/之前将数据控件中的执行操作添加到导航中。

请注意,Shay的博客文章来自2009年,涵盖了不使用搜索组件的用例,而是使用了Execute with Params。这是你在用什么?更多地了解您的用例会很有帮助。