使用“打开一页”;onclick";xpages链接事件

使用“打开一页”;onclick";xpages链接事件,xpages,Xpages,我很难在新标签页中打开xpage。我已经尝试了下面链接中建议的许多方法 但是没有运气。我无法使用“链接类型”,因为我正在通过传递父文档unid、文档unid、frompage等动态生成url。这就是我使用链接的“onClick”事件的原因。任何帮助都将不胜感激。提前感谢下面是我的代码 <?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> <xp

我很难在新标签页中打开xpage。我已经尝试了下面链接中建议的许多方法 但是没有运气。我无法使用“链接类型”,因为我正在通过传递父文档unid、文档unid、frompage等动态生成url。这就是我使用链接的“onClick”事件的原因。任何帮助都将不胜感激。提前感谢下面是我的代码

 <?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:link escape="true" text="New Call"id="linkNewCall">
<xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="linkNewCall">
<xp:this.action><![CDATA[#{javascript:var url="www.google.com"
//view.postScript("window.open('" + url + "')");
view.postScript("var tempwindow = window.open('" + url + "','_blank'); tempwindow.focus();")}]]></xp:this.action>
</xp:eventHandler></xp:link>
</xp:view>


由于您使用的是服务器端Javascript,因此可以使用它打开新窗口。不需要使用view.postScript执行相同的操作

有几种方法可以做到这一点。一种方法是查看facesContext.getExternalContext()

postScript有时在某些上下文中不起作用,当它不起作用时,它通常不会返回错误,只是不做任何事情


编辑:linkonclick事件也支持客户端javascript,如果您真的喜欢使用它,那么将代码放在那里。默认选项卡打开到服务器端,您必须单击“客户端”添加代码。

您可以计算服务器端的URL,然后使用目标属性。这里我使用的是您的简单示例,但您可以进行各种计算:

<xp:link escape="false" id="linkNewCall" text="New Call" target="_blank">
    <xp:this.value><![CDATA[#{javascript:
        var href = "http://www.google.com";
        return href;
    }]]></xp:this.value>
</xp:link>


您也可以将值计算更改为“页面加载时计算”(只需将#更改为$)。

您是否尝试过计算URL并将其返回到xp:link的值属性中(如此答案所示:)?您好,如我的问题中所述,我无法使用“链接类型”。我认为此.value(href)将设置为“页面加载时”“。但是,如果我有一个静态url,这是可行的。谢谢你,这绝对是最好的方式。嗨,佩尔,谢谢你的评论。我正在尝试访问“this.value”中的viewScope变量,当我选中服务器控制台时,“print”语句仅在页面加载时显示,而在单击链接时不显示。请看下面我的代码。我做错了什么吗?甚至我也尝试过将部分刷新设置为相同的链接id“linkNewCall”。
何时何地更新viewScope.selectedTarget?您需要从更新viewScope变量的控件中部分刷新xp:link控件。实际上,即使静态文本也没有打印。刚试过打印静态文本打印(“打印”)。在“onClick”期间,在“”中输入的任何代码都没有在控制台中打印,但它是在“pageLoad”上打印的