首先,在古老的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