自页面调用不更新
Self page call doesn't update
当您单击 link 以使用新页面参数转到同一页面时,我正在尝试更新 adf 中的整个页面。如果我在新选项卡中打开 link,它工作正常,但在同一选项卡中打开它不会更新。
我有一个页面只显示来自 url 的参数值,一个 link 到具有不同参数值的同一页面,以及一个显示日期时间的输出文本。我的任务流从调用 RetrieveDateTime() 开始,然后转到 refrestTest.jsff。任务流是 refresh.jsf 页面上的一个区域。
public class RefreshDC {
private String dateTime;
public RefreshDC() {
super();
}
public void RetrieveDateTime() {
System.out.println("DC RETRIEVEDATETIME");
RefreshFacade rf = new RefreshFacade();
this.dateTime = rf.getDate().getDatetime();
}
public void setDateTime(String dateTime) {
this.dateTime = dateTime;
}
public String getDateTime() {
return dateTime;
}
}
页面片段:
//refreshTest.jsff
<?xml version='1.0' encoding='UTF-8'?>
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:panelGroupLayout id="pgl1" layout="vertical">
<af:outputText value="#{param.id}" id="ot1"/>
<af:goLink text="RP PDTLS" id="gl1" destination="/faces/refresh.jsf?
id=1234567890"/>
<af:outputText value="DateTime: #{bindings.dateTime.inputValue}"
shortDesc="#{bindings.dateTime.hints.tooltip}" id="ot2"
partialTriggers="gl1"/>
</af:panelGroupLayout>
</ui:composition>
页面:
//refresh.jsf
<f:view xmlns:f="http://java.sun.com/jsf/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:document title="refresh.jsf" id="d1">
<af:form id="f1">
<af:region value="#{bindings.refresh1.regionModel}" id="r1"/>
</af:form>
</af:document>
</f:view>
正如我所说,如果您在新选项卡中打开 goLink,它将更新日期时间,但是如果您在同一选项卡中打开它,日期时间将保持不变。 (param.id 在两种情况下都会更新)
您可以通过将 golink 替换为带有调用以下 java bean 函数的 ActionListener 的 adf 按钮,以编程方式刷新整个页面:
public static void refreshPage() {
FacesContext fc = FacesContext.getCurrentInstance();
String refreshpage = fc.getViewRoot().getViewId();
ViewHandler ViewH = fc.getApplication().getViewHandler();
UIViewRoot UIV = ViewH.createView(fc, refreshpage);
UIV.setViewId(refreshpage);
fc.setViewRoot(UIV);
}
我设法使用任务流解决了这个问题。基本上,我让按钮转到带有区域的新页面。该区域有一个读取 url 参数的任务流,如果它符合我的条件,则使用新参数 (toDocumentsPage) 链接回原始页面。否则,转到不同的页面 (searchResults)。Taskflow to refresh the page
当您单击 link 以使用新页面参数转到同一页面时,我正在尝试更新 adf 中的整个页面。如果我在新选项卡中打开 link,它工作正常,但在同一选项卡中打开它不会更新。
我有一个页面只显示来自 url 的参数值,一个 link 到具有不同参数值的同一页面,以及一个显示日期时间的输出文本。我的任务流从调用 RetrieveDateTime() 开始,然后转到 refrestTest.jsff。任务流是 refresh.jsf 页面上的一个区域。
public class RefreshDC {
private String dateTime;
public RefreshDC() {
super();
}
public void RetrieveDateTime() {
System.out.println("DC RETRIEVEDATETIME");
RefreshFacade rf = new RefreshFacade();
this.dateTime = rf.getDate().getDatetime();
}
public void setDateTime(String dateTime) {
this.dateTime = dateTime;
}
public String getDateTime() {
return dateTime;
}
}
页面片段:
//refreshTest.jsff
<?xml version='1.0' encoding='UTF-8'?>
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:panelGroupLayout id="pgl1" layout="vertical">
<af:outputText value="#{param.id}" id="ot1"/>
<af:goLink text="RP PDTLS" id="gl1" destination="/faces/refresh.jsf?
id=1234567890"/>
<af:outputText value="DateTime: #{bindings.dateTime.inputValue}"
shortDesc="#{bindings.dateTime.hints.tooltip}" id="ot2"
partialTriggers="gl1"/>
</af:panelGroupLayout>
</ui:composition>
页面:
//refresh.jsf
<f:view xmlns:f="http://java.sun.com/jsf/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:document title="refresh.jsf" id="d1">
<af:form id="f1">
<af:region value="#{bindings.refresh1.regionModel}" id="r1"/>
</af:form>
</af:document>
</f:view>
正如我所说,如果您在新选项卡中打开 goLink,它将更新日期时间,但是如果您在同一选项卡中打开它,日期时间将保持不变。 (param.id 在两种情况下都会更新)
您可以通过将 golink 替换为带有调用以下 java bean 函数的 ActionListener 的 adf 按钮,以编程方式刷新整个页面:
public static void refreshPage() {
FacesContext fc = FacesContext.getCurrentInstance();
String refreshpage = fc.getViewRoot().getViewId();
ViewHandler ViewH = fc.getApplication().getViewHandler();
UIViewRoot UIV = ViewH.createView(fc, refreshpage);
UIV.setViewId(refreshpage);
fc.setViewRoot(UIV);
}
我设法使用任务流解决了这个问题。基本上,我让按钮转到带有区域的新页面。该区域有一个读取 url 参数的任务流,如果它符合我的条件,则使用新参数 (toDocumentsPage) 链接回原始页面。否则,转到不同的页面 (searchResults)。Taskflow to refresh the page