首先,在古老的JSF版本中存在一个导致命令链接无法工作的错误。确保您使用的是最新版本/内部版本。 Mojarra可用here和MyFaces可用here。
至于你的实际问题,一个commandlink基本上会产生一个链接提交父表格。它应该被放置在一个h:form
,但在这里你只是想要一个普通香草链接。在这种情况下,请将其替换为h:outputLink
。不要忘记在点击事件结束时添加return false;
以阻止链接的默认操作。
<h:outputLink
value="#{managePersonalization.disclaimerURL}"
onclick="openDisclaimer(this); return false;">
<h:outputText value="Disclaimer" />
</h:outputLink>
此外,value
属性实际上作为产生<a>
元素的href
属性结束,所以你的JavaScript需要修复它从href
属性,而不是value
属性(JavaScript并没有看到获取URL JSF的源代码,而只是将其产生的HTML输出):
function openDisclaimer(link) {
window.open(link.href);
}
你也看到document.getElementById
被删除,因为它没有任何意义,因为你已经拥有唯一的元素作为函数参数! ;)
你甚至可以摆脱整体功能:
<h:outputLink
value="#{managePersonalization.disclaimerURL}"
onclick="window.open(this.href); return false;">
<h:outputText value="Disclaimer" />
</h:outputLink>
或者,如果你真的想要一个worthfully标签/窗口,而不是一个弹出窗口,那么你也可以只是使使用您设置为_blank
的target
属性:
<h:outputLink
value="#{managePersonalization.disclaimerURL}"
target="_blank">
<h:outputText value="Disclaimer" />
</h:outputLink>
你有JSF,其生成JavaScript + HTML,产生一个输出。你只是向我们展示了两端。问题在哪里发生?生成的HTML + JavaScript不是您所期望的,还是您得到的结果与您生成的HTML + JavaScript期望值不符? – Quentin 2010-02-01 15:42:26