2011-02-09 77 views
2

我使用mojarra primefaces tomcat6.x制作JSF2.0项目。Jsf重定向到新窗口

我做了一个选择列表,当我选择列表中的项目,我想重定向到选定的网址。它可以是一个内部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> 

的Java:在change活动期间

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

回答

1

使用JavaScript的window.open()功能,而不是form.submit()

假设选择项的值是fullworthy URL的,这里有一个例子:

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

id属性原谅我澄清一下,我有我的名单上外部和内部URL,我想在新的窗口只对外部开放ü RL。 – 2011-02-09 21:34:21

0

使用的onclick = “this.form.target = '_空白'”(或在你的电平变化的情况下),即

<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">