2011-08-25 39 views
1

URL#哈希要獲取URL哈希#在JavaScript,你可以這樣做:獲取與JSTL

window.location.hash 

是否有類似的簡單和容易的方式做到這一點的JSTL?

一個URL的例子,我有:http://hatsos.com/#somehashname

如果沒有一個內置的簡單的方法,我將如何去獲取URL,然後解析散出來的嗎?

+0

是不是隻在客戶端使用的[URL片段標識符](http://en.wikipedia.org/wiki/Fragment_identifier)? –

回答

2

在服務器端獲取散列碎片標識符的唯一方法是讓客戶端發送一個HTTP請求,並將該值作爲請求參數進行更改。例如,在window.onhashchange事件期間使用Ajax。我在你的問題歷史中看到你熟悉jQuery。這裏有一個開球例如:

window.onhashchange = function() { 
    $.get('someservlet', { 'hash', window.location.hash }, function(response) { 
     // ... 
    }); 
} 

@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String hash = request.getParameter("hash"); 
    // ... 
} 

爲了彌補缺乏IE6/7支持window.onhashchange,考慮jQuery hashchange plugin

+1

我很害怕。我在JSTL中需要它的原因是,我可以將哈希值添加到會話中。 $ {} sessionScope.hash。這樣,當他們最初到達一個帶有散列的頁面後,無論他們接下來去哪裏,我都可以堅持這個價值。是我的客戶端的設計,它必須是散列...沒有參數。順便說一下,這個哈希將不會在加載時間後改變。這是用戶直接訪問的網址。所以我認爲它可用於服務器,因爲參數處於相同的情況。 – UpHelix

1

你說的是URI Fragment id,大多數用戶代理甚至不會將它發送到服務器,所以你不能真正把它發送到那裏。 JavaScript可以訪問它,因爲它在客戶端運行。