2011-06-06 50 views
1

使用Struts2,我在我的java代碼中計算一個鏈接,並在JSP頁面的getter中公開鏈接的字符串。我嘗試使用<a href='<s:property value="mylink" />'>a Link</a>鏈接到此外部鏈接。可悲的是,Struts總是在本鏈接之前放置本地上下文,因此生成的鏈接看起來像<a href="http://localhost:8080/Mycontext/https://twitter.com/some?more=param&ete=rs">a Link</a>Struts2 - 鏈接到JSP上的外部URL *不包括*本地上下文路徑?

注:我也嘗試使用<s:a><s:url>includeContext="false" ...相同的結果。這裏有什麼問題?

回答

3

Struts always puts the local context before this link

呃?如果你真的在你的JSP編寫一個簡單的<a ... >元素

<a href='<s:property value="mylink" />'>a Link</a> 

,那麼Struts2的將添加任何東西,Struts2的甚至不知道有一個鏈接那裏,property標籤只是一個普通「回聲該屬性的值爲「」指令。您可以通過在A元素外複製相同的標記<s:property value="mylink" />來檢查該問題。要麼你正在計算你的行爲屬性錯誤,要麼你不是寫這個jsp片段,而是使用一些與鏈接相關的Struts2標籤(<s:a><s:url>)。

順便說一句,如果你想放置一個外部鏈接,與你的應用程序無關,第一個選項(一個普通的A元素,而不是Struts2鏈接標記)似乎是正確的方法。

+0

你說得對,我沒有正確地計算網址 - 事實上,我對整個網址進行了網址編碼,這使得開頭的「http://」無效。但Struts2(或JSP本身?)似乎意識到,有一個標籤具有不良定義的href屬性,然後預先設置上下文。謝謝:-) – Akku 2011-06-06 15:00:16

+0

您是否真的在生成的html內容中查看內容,斷言上下文是前置的?也許發生的事情是鏈接是相對的(缺少http:// ...),所以瀏覽器 - 顯式地添加了當前上下文。 – leonbloy 2011-06-06 15:04:46

+0

是的,我查看了生成的HTML,並確實缺少了http://(而不是httpandsomeASCIIcodes在URL的開頭),所以我猜想不是僅僅將相對URL留在那裏,而是將Struts2轉換爲絕對URL使用appcontext。不能說我喜歡那個「功能」。 – Akku 2011-06-07 13:28:11