Javascript 按h打开URL:selectOneMenu
我有一个JSF1.2 selectOneMenu组件。Javascript 按h打开URL:selectOneMenu,javascript,ajax,jsf,seam,Javascript,Ajax,Jsf,Seam,我有一个JSF1.2 selectOneMenu组件。 当前,用户从下拉菜单中选择一个项目,然后单击输出链接以在新浏览器窗口中打开url: <h:selectOneMenu value="#{itemSelected}" valueChangeListener="#{someclass.generateInfoForURL}" onchange="submit()" > <s:selectItems var="_items" value="#{itemsList}" la
当前,用户从下拉菜单中选择一个项目,然后单击输出链接以在新浏览器窗口中打开url:
<h:selectOneMenu value="#{itemSelected}" valueChangeListener="#{someclass.generateInfoForURL}" onchange="submit()" >
<s:selectItems var="_items" value="#{itemsList}" label="#_items.itemName}" />
<s:convertEntity />
</h:selectOneMenu>
<h:outputLink value="URL&generatedInfo=#{someclass.component.generatedInfo}" target="_blank" >
<f:verbatim>View Report</f:verbatim>
</h:outputLink>
查看报告
我需要的是;当用户选择其中一个下拉项时,它应该在一个新页面中打开URL,而无需选择链接的中间步骤。我可以在支持bean中构建URL,但如何让它打开新的浏览器窗口?将URL作为项目值提供,并使用JavaScript在新选项卡/窗口中打开它,而不是提交表单。您只需要确保所有URL都已正确地预先准备好 例如
...
(您当然可以将其作为
提供,以上只是一个基本的开始示例)我尝试过:
页面加载,但generateInfoForURL方法在页面加载时运行,仅此而已,从下拉列表中选择一项没有任何作用。我遗漏了什么吗?你的JS语法无效。引号应该围绕JS字符串,而不是EL表达式。更简单的方法是让item value返回正确的值。当您更改值时,EL表达式不会重新计算。现在我更好地了解了您试图实现的目标,您可能希望改为在值更改侦听器方法中执行重定向。我用一个示例更新了答案。thanx BalusC可以工作,但不会打开新页面,它会重定向当前页面。我会给它一个答案,因为我在其他地方需要它,如果我不能计算出JS来打开一个新页面,我会把它标记为答案。哦,对不起,我完全错过了这一部分。最好的选择是JavaScript的window.open(url)
方法。确保URL事先准备好,然后在onchange
中进行更改。
<h:selectOneMenu onchange="window.open(value)">
<f:selectItem itemLabel="Select page.." />
<f:selectItem itemLabel="page1" itemValue="page1.jsf" />
<f:selectItem itemLabel="page2" itemValue="page2.jsf" />
<f:selectItem itemLabel="page3" itemValue="page3.jsf" />
...
</h:selectOneMenu>