【发布时间】:2014-07-31 08:36:07
【问题描述】:
我有一个融合 Web 应用程序,其中包含一个 af:query 面板(我用表格创建了它的查询面板),以及相互关联的 af:table 和 af:panelFormLayout。当我在查询面板中搜索条目时,结果会同时显示在表格和 panelFormLayout 中。当我在查询面板中按下重置按钮时,只有查询面板被重置。我想重置所有页面。如何利用 ADF 的易用性来做到这一点?
【问题讨论】:
标签: jsf oracle-adf
我有一个融合 Web 应用程序,其中包含一个 af:query 面板(我用表格创建了它的查询面板),以及相互关联的 af:table 和 af:panelFormLayout。当我在查询面板中搜索条目时,结果会同时显示在表格和 panelFormLayout 中。当我在查询面板中按下重置按钮时,只有查询面板被重置。我想重置所有页面。如何利用 ADF 的易用性来做到这一点?
【问题讨论】:
标签: jsf oracle-adf
基本上,您希望覆盖 af:query 的重置功能。在这种情况下,您应该:
1. 将 af:query 的 QueryListener 属性设置为托管 bean 方法。您可以参考此示例,该示例描述了所需的所有步骤:Programmatically RESET query panel
在里面,你会看到这个电话:AdfFacesContext.getCurrentInstance().addPartialTarget(t1);
它负责表的刷新。现在,如果您拥有 af:panelGroupLayout 中的所有内容(或任何其他支付类型组件),则可以改为刷新它(因此您需要将其与 bean 上的字段绑定并使用它而不是 t1 在此调用中。否则,如果您仍希望刷新整个页面,请执行第 2 步。
2.添加需要的代码使页面刷新:
FacesContext context = FacesContext.getCurrentInstance();
String currentView = context.getViewRoot().getViewId();
ViewHandler vh = context.getApplication().getViewHandler();
UIViewRoot x = vh.createView(context, currentView);
x.setViewId(currentView);
context.setViewRoot(x);
只需将其放在上述链接中描述的方法中即可。
【讨论】: