每当我的页面出现时,它都会执行表查询。我试过这样做,
https://blogs.oracle.com/shay/entry/preventing_queries_when_page_f
但它仍然会发生。我怎样才能解决这个问题?我已经尝试将刷新条件设置为never,但后来我无法获取任何数据。我正在使用JDev 11g。
感谢。
答案 0 :(得分:2)
我可以在JDeveloper 12.1中分享我是如何做到这一点的。我不确定它是否适用于11g。我也不确定这是最好的方法。但它对我有用。
这个想法是不阻止初始查询执行,而是确保它快速发生并且不返回任何数据。方法是在应用程序模块的View Instance中设置初始查询条件。
此方法假定您的视图对象中至少有一个绑定变量。如果不这样做,则需要为此添加一个。
在这里,您可以指定最初用于页面的视图条件。所以, *设置一个初始参数,它将(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。这是你在用什么?更多地了解您的用例会很有帮助。