Jsf перенаправить в новое окно - PullRequest
3 голосов
/ 09 февраля 2011

Я делаю проект JSF2.0, используя mojarra primefaces tomcat6.x.

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

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011

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

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

<h:selectOneMenu onchange="window.open(this.options[this.selectedIndex].value)">
0 голосов
/ 25 февраля 2014

Используйте 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>

И, конечно же, не забудьте исправить атрибут idв <h:form id="form">

...