2011-02-09 3 views
2

Я делаю проект JSF2.0 с использованием моджаррских перференций tomcat6.x.Jsf перенаправить в новое окно

Я сделал список выбора, и когда я выбираю элемент списка, я хочу перенаправить выбранный 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> 

Java:

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

ответ

1

Используйте в JavaScript window.open() функция, а не form.submit() во время change события.

Предполагая, что выбора значений элементов все fullworthy URL, вот пример:

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

Я прощаю уточнить, у меня есть внешний и внутренний URL-адрес в моем списке, и я хочу, чтобы открыть в новом окне только для внешнего U гй. –

+1

Это сложно. Вместо этого я просто выполнил бы работу по определению URL-адреса в JS-функции. Если внешний, do 'window.open (url);'. Если внутренний, выполните 'window.location = url;'. – BalusC

0

Использование OnClick = "this.form.target = '_ пробел" (или в вашем случае в 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">