“_blank”不适用于Oracle 12c中按钮的TargetFrame属性

时间:2016-02-17 17:53:16

标签: oracle oracle-adf jdeveloper oracle12c

我看过很多关于如何在浏览器中打开新标签/窗口的帖子。他们中的大多数人建议为按钮设置属性target = _blank,我做了(我使用TargetFrame=_blank)。它仍然在同一窗口/选项卡中打开链接。我也尝试过使用多种浏览器,但都给出了相同的结果。我相信它可能是Oracle 12c问题。我在{12}之前看到的_blank推荐的大多数已接受的答案都在Oracle 12c之前。我该如何解决这个问题?

更新

按钮的来源:

<af:button text="report" id="b1"
binding="#{backingBeanScope.Backing.reportButton}"
action="#{backingBeanScope.Backing.urlConcatenatioinForReporting}"
targetFrame="_blank"
destination="#{backingBeanScope.Backing.URLToDisplayInBrowser}"
windowModalityType="modeless"
useWindow="true"/>

按钮的方法:

private String URLToDisplayInBrowser; //This has its accessors 

public String urlConcatenatioinForReporting() {
    String URL = "http://localhost:7101/";
    String destination = URL+textToAppendToReportUrl;
    setURLToDisplayInBrowser(destination);

    try {
        FacesContext.getCurrentInstance().getExternalContext().redirect(URLToDisplayInBrowser);
    }catch(IOException e) {
        e.printStackTrace();
    }
    return null;
}

1 个答案:

答案 0 :(得分:0)

你搞砸了整件事。

我不确定你是否真的需要绑定,但现在保留原封为actionactionListener是没用的,因为目标属性将被克服。 来自文档:

  

destinatnion - 此组件在激活时引用的URI。这是个   使用操作的替代方法,目标优先   当两者都被设定时。


useWindowwindowModality用于弹出窗口。

现在发生了什么,首先是来自getter的destination按钮读取值,现在它是空的,因此禁用了destination属性。现在action将启用。在action(方法urlConcatenatioinForReporting)中,您为destination设置属性,但现在不会被重新加载,然后强制进行外部重定向这段代码:FacesContext.getCurrentInstance().getExternalContext().redirect(URLToDisplayInBrowser);,它将占据一席之地。因此,当您按下按钮时,您将被重定向到当前标签内的字符串URLToDisplayInBrowser中提供的URL

那么你真正需要做的是:

<af:button text="report" id="b1"
binding="#{backingBeanScope.Backing.reportButton}"
targetFrame="_blank"
destination="#{backingBeanScope.Backing.urlToDisplayInBrowser}"/>

您的bean代码:

// note: properties names should start from lowercase
private String urlToDisplayInBrowser; //This has its accessors 
public String getUrlToDisplayInBrowser(){
  // FIXME: Setting it to some constant for testing purpose
  urlToDisplayInBrowser = "http://www.google.com";
  return urlToDisplayInBrowser;
}

现在它应该正常工作。尝试一下,然后根据需要修改bean代码。