【问题标题】:Open URL by h:selectOneMenu通过 h:selectOneMenu 打开 URL
【发布时间】:2012-02-01 23:16:08
【问题描述】:

我有一个 JSF1.2 selectOneMenu 组件。
目前,用户从下拉菜单中选择一个项目,然后单击输出链接以在新的浏览器窗口中打开一个 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&amp;generatedInfo=#{someclass.component.generatedInfo}" target="_blank" > 
    <f:verbatim>View Report</f:verbatim>            
</h:outputLink> 

我需要的是;当用户选择其中一个下拉项时,它应该在新页面中打开 URL,而无需选择链接的中间步骤。我可以在 backing bean 中构建 URL,但是如何让它打开一个新的浏览器窗口?

【问题讨论】:

    标签: javascript ajax jsf seam


    【解决方案1】:

    提供 URL 作为项目值并使用 JavaScript 在新选项卡/窗口中打开它,而不是提交表单。您只需要确保所有 URL 都已事先准备好。

    例如

    <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>
    

    (您当然可以将其提供为&lt;f/s:selectItems&gt;,以上只是一个基本的启动示例)

    【讨论】:

    • 我试过:&lt;h:selectOneMenu value="#{someclass.itemSelected}" onchange="window.location = http://'#{ourHostName}'/report_war/preview?__report=reportNmae.rptdesign&amp;amp;rpt_id= '#{someclass.generateInfoForURL()}'"&gt; &lt;s:selectItems var="_items" value="#{itemsList}" label="#_items.itemName}" /&gt; &lt;s:convertEntity /&gt; &lt;/h:selectOneMenu&gt; 页面加载,但 generateInfoForURL 方法在页面加载时运行,就是这样,从下拉列表中选择一个项目什么都不做。我错过了什么吗?
    • 您的 JS 语法无效。引号应该围绕 JS 字符串,而不是围绕 EL 表达式。更简单的是让项目值已经返回正确的值。当您更改值时,不会重新评估 EL 表达式。现在我更好地看到了您要实现的目标,您可能希望在值更改侦听器方法中执行重定向。我用一个例子更新了答案。
    • thanx BalusC,它可以工作,但不会打开新页面,它会重定向当前页面。我给它一个因为我将在其他地方需要它,如果我无法解决 JS 打开新页面,我会将其标记为答案。
    • 抱歉,我完全错过了那部分。你最好的选择是 JavaScript 的 window.open(url) 方法。确保事先准备好 URL,然后在 onchange 中进行。
    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 2019-04-03
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多