【问题标题】:jsf can I close browser tab from bean?jsf我可以从bean关闭浏览器选项卡吗?
【发布时间】:2014-04-08 13:38:14
【问题描述】:

我的应用程序是管理软件,为了方便用户,我想允许他们打开多个选项卡以一次更改多个记录的参数。但是在完成他们所做的一切之后,标签仍然保持打开状态,我对此有些抱怨。所以基本上我的问题是:

如果有任何方法可以关闭向我的支持 bean 中的方法发送请求的浏览器选项卡?例如:

JSF 页面:

<h:commandButton value="Public score"
   action="#{assignmentBean.publicSelected()}">                        
</h:commandButton>

豆方法:

public void publicSelected() {
    application.setAssignmentStatus(done);
    dataAccess.mergeEntity(application);
}

在合并命令并关闭激活方法的浏览器选项卡后有什么方法可以添加?感谢帮助

解决方案的完整代码我不喜欢混合 JS 和 JSF,所以对于你们中的任何人,我也使用 Tiago Vieira Dos Santos 提示发布完整的代码解决方案。

现在我的按钮代码如下:

<h:commandButton value="Public score"
   action="#{myBean.doThings}">    
   <f:ajax execute="@this" onevent="pop"/>                    
</h:commandButton>

在页面底部加上我添加的代码如下:

<script type="text/javascript">
    function pop(data){
        if(data.status == "success"){
            window.close();
        }
    }
</script>

现在在方法完成必须做的事情之后,窗口关闭。

【问题讨论】:

    标签: java jsf


    【解决方案1】:

    我认为你可以使用 javascript 命令 Window.close() 然后你可以将它放在 oncomplete 标记上或使用 FacesContext 调用你的托管 bean。

    How to close current tab in a browser window?中查看更多信息

    【讨论】:

    • 在混合 js 和 jsf 时我太笨了——你能发布一个代码来更新我的按钮代码吗?我试过 但没有运气
    【解决方案2】:

    使用 OutputLink 和 Javascript

    <h:outputLink onclick="window.open('popup.faces', 'popupWindowName', 'dependent=yes, menubar=no, toolbar=no'); return false;" value="#">
            <h:outputText value="open popup" />
    </h:outputLink>
    

    通过这个解决方案,我们可以控制新浏览器窗口的外观。而且由于没有回发,因此根本没有验证。这是在不需要模型更新且无需执行任何操作时打开新浏览器窗口的最简单方法。

    为了实现正确的动作处理,我们需要将是否打开新窗口的决定转移到动作监听器。

    <h:commandLink actionListener="#{bean.openPopupClicked}" value="open popup" />
    
    public void openPopupClicked(ActionEvent event) {
        // code to open a new browser window goes here
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-27
      • 2015-04-09
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      • 2010-10-05
      相关资源
      最近更新 更多