5

我正在使用 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);
}
4

2 回答 2

3

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

假设选择的项目值是完全值得的 URL,下面是一个示例:

<h:selectOneMenu onchange="window.open(this.options[this.selectedIndex].value)">
于 2011-02-09T21:18:21.847 回答
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>

当然,不要忘记修复 id 属性<h:form id="form">

于 2014-02-25T16:53:48.677 回答