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