Jsf重定向到新窗口

时间:2011-02-09 20:57:37

标签: jsf redirect jsf-2 new-window

我正在使用mojarra primefaces tomcat6.x制作一个JSF2.0项目。

我做了一个选择列表,当我选择列表中的项目时,我想重定向到所选的URL。它可以是内部URL。

这是有效的,但我想知道是否可以在新窗口中重定向。

我有以下代码JSF:

        <h:form>
            <h:selectOneMenu onchange="this.form.submit();" valueChangeListener="#{wagent.selectBusinessTravelLink}">
                <f:selectItem itemLabel="#{msg['form.select.defaultValue']}" itemValue="" noSelectionOption="true"/>
                <f:selectItems value="#{wagent.businessTravelLinks}" var="bLinkItem" itemLabel="#{bLinkItem.label}" itemValue="#{bLinkItem.id}" />
            </h:selectOneMenu>
        </h:form>

爪哇:

   public void selectBusinessTravelLink(ValueChangeEvent event) {
// some stuff
FacesContext.getCurrentInstance().getExternalContext().redirect(targetUrl);
}

2 个答案:

答案 0 :(得分:2)

form.submit()事件期间使用JavaScript的window.open()函数而不是change

假设选择项值是值得满足的URL,这是一个例子:

<h:selectOneMenu onchange="window.open(this.options[this.selectedIndex].value)">

答案 1 :(得分:0)

使用onclick =“this.form.target ='_ blank'”(或在你的情况下在onchange中),即

<h:form id="form">
    <h:selectOneMenu onchange="this.form.target='_blank'; this.form.submit();" valueChangeListener="#{wagent.selectBusinessTravelLink}">
         <f:selectItem itemLabel="#{msg['form.select.defaultValue']}" itemValue="" noSelectionOption="true"/>
         <f:selectItems value="#{wagent.businessTravelLinks}" var="bLinkItem" itemLabel="#{bLinkItem.label}" itemValue="#{bLinkItem.id}" />
     </h:selectOneMenu>
 </h:form>

当然,不要忘记在<h:form id="form">

中修复id属性