2014-03-27 52 views
0

我有一個h:outputLink,如下所示:H:outputLink的前綴上下文路徑到URL值

<h:outputLink value="#{doc.value}" style="color:blue">#{doc.key}</h:outputLink> 

該值是一個URL www.example.com。當我點擊該值時,我在地址欄中看到的網址是http://localhost:8080/Project/www.example.com。爲什麼上下文路徑被添加到URL的前綴中?

我查了一下生成的HTML,但是這個值是沒有上下文路徑的實際URL。我在JSF中嘗試了<a>,但沒有任何區別。

任何幫助解決這個問題將不勝感激。謝謝!

回答

3

<h:outputLink />如果值字段是相對路徑,則將其值附加到當前父路徑(而不是Servlet上下文)。這意味着,如果你在http://localhost:8080/Project/users.xhtml此特定鏈接:

<h:outputLink value="sales.xhtml"> 
    Sales 
</h:outputLink> 

這將嘗試將您重定向到http://localhost:8080/Project/sales.xhtml

那麼,當你指定一個相對的JSF時,JSF知道它必須將它附加到你當前的父url。爲了避免這種情況,寫絕對URL:

public String getValue(){ 
    return "http://www.example.com"; 
} 
<h:outputLink value="#{doc.value}"> 
    Custom external url 
</h:outputLink> 
+0

謝謝!我錯過了'http://'。沒想到這會有所作爲。 – Rajath