【问题标题】:h:commandLink open in new browser windowh:commandLink 在新的浏览器窗口中打开
【发布时间】:2013-09-30 18:57:25
【问题描述】:

我想打开一个新窗口,配置高度和宽度,同时使用

<h:commandLink id="zyzid" value="click me" action="#{test.testDo}"  target="_blank" />

这呈现为:

<a onclick="mojarra.jsfcljs(document.getElementById('myForm'),{'myForm:xyzid':'myForm:xyzid'},'_blank');return false" href="#" id="myForm:xyzid">click me</a>

我查看了 jsfcljs() 函数。它使用 target="_blank" 提交表单,但我在任何地方都看不到 window.open()。那么,我怎样才能改变这段代码来改变新窗口的高度和宽度呢?

供参考:

mojarra.jsfcljs = function jsfcljs(f, pvp, t) {
    mojarra.apf(f, pvp);
    var ft = f.target;
    if (t) {
        f.target = t;
    }
    f.submit();
    f.target = ft;
    mojarra.dpf(f);
};

【问题讨论】:

  • 您不使用&lt;p:dialog&gt;&lt;rich:popupPanel&gt; 之类的(模态)对话框有什么原因(您的问题历史证实您熟悉RichFaces)或者可能是基于jQuery 的自制对话框?毕竟这对最终用户、网络浏览器和弹出窗口拦截器也更加友好,因此不太可能引起烦恼和/或麻烦。
  • 从导航的角度来看——我们希望用户打开多个窗口并能够在主窗口和细节窗口之间切换。但从技术方面来看——这个页面有一个带有最新 jquery 和 jquery-ui 的 3rd 方组件。我还在那个想要接管窗口以管理其布局的页面上使用 extJs 组件。所以把它放在单独的视图上是有道理的。我还在同一页面上将一些 jsf 与这个 3rd 方组件混合在一起,只要不引用 RichFaces 组件,它就不会加载 RF4 的 jquery。顺便说一句,balusC,我喜欢你的 jsf/rf 回复!!!
  • 第三方组件使用的jQuery与RF4不兼容。 Rf4.2.0.Final 在 1.7.1 上,它们在 1.9.1 上。我曾经升级 RF4 的 jquery 并尝试重新添加已弃用/删除的功能。但是1.9.1的太多了。这个设计是让我从一开始就制作一个浏览器选项卡,但现在人们要求我看看我是否可以将它从浏览器中分离出来并设置宽度/高度。听起来微不足道,但在我使用 进入这个角落后就没有了

标签: jsf-2


【解决方案1】:

我找到了一些相关的linksthis,然后我找到了这个解决方案,这似乎对我有用。 h:commandLink 打开一个新页面,我可以操作它的宽度和高度。这涉及稍微修改/覆盖 mojarra.jsfcljs 函数。它使用标准 window.open()(由 onclick 触发)打开一个窗口,并将它提交的表单与该窗口相关联。

$(window).load(function(){
            mojarra.jsfcljs = function jsfcljs(f, pvp, t) {
                mojarra.apf(f, pvp);
                var ft = f.target;
                if (t) {
                    if (t.indexOf('options') != -1){
                        f.target = '_blank' + new Date().getTime();
                        var options = t.substring(t.indexOf('optionts') + 9);
                        window.open('', f.target, options); 
                    }
                    else{
                        f.target = t;
                    }
                }

                f.submit();
                f.target = ft;
                mojarra.dpf(f);
              };
        });

标记:

< h:commandLink id="viewLink"  action="#{testBean.doTest}" value="h:commandLink"  target="options:height=200, width=300" />

【讨论】:

  • @BalusC 你同意吗? :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-04
  • 2016-11-29
  • 1970-01-01
  • 2015-09-16
  • 2014-08-29
  • 2015-12-26
  • 1970-01-01
相关资源
最近更新 更多