2014-10-02 64 views
3

我想基於它的鍵,這是一個數字作爲JSTL中的字符串訪問一個Hashtables值。 但是,如果我遞增/遞減鍵值,它不再工作。操縱散列表鍵不起作用

我在for循環中迭代排序的鍵列表。我使用這個項目來訪問Hashtable。

<c:forEach items="${helper:getSortedList(hashtableObj)}" var="lineNumber" varStatus="loop"> 
    <c:if test="${param.lineNbr eq lineNumber}"> 
     <c:if test="${lineNumber>1}"> 
      <fmt:parseNumber var="prevLineNumberKey" type="number" value="${lineNumber-1}" /> 
      <c:out value="PREV ${hashtableObj[prevLineNumberKey]}" escapeXml="false"/><br/> 
     </c:if> 
     <c:out value="Current :${lineNumber}" /><br/> 
     <c:if test="${lineNumber<fn:length(hashtableObj)-1}"> 
      <fmt:parseNumber var="nextLineNumberKey" type="number" value="${lineNumber+1}" /> 
      <c:out value="NEXT ${hashtableObj[nextLineNumberKey+1]}" escapeXml="false"/><br/> 
     </c:if> 
</c:if> 
</c:forEach> 

輸出爲

上一個
電流:51
NEXT

但我希望是

上一個50
電流:51
NE XT 52

任何指針的讚賞。

+0

getSortedList採用Hashtable並返回排序列表。 – bkrish 2014-10-07 20:49:32

回答

1

如果您的Map中的鍵值爲String而不是獲取元素,則必須使用String值查詢該值。您當前的解決方案使用Long值查詢Map
你可以數轉換爲String,然後查詢Map這樣的:

<c:set var="numberAsString">${50 - 1}</c:set> 
<c:out value="value: ${hashtableObj[numberAsString]}"/> 
+0

使用這個我可以通過修改鍵訪問散列表。謝謝! – bkrish 2014-10-10 19:40:45

0

嘗試更換:

<fmt:parseNumber var="prevLineNumberKey" type="number" value="${lineNumber-1}" /> 

有了:

<c:set var="prevLineNumberKey">${lineNumber-1}</c:set> 

而更換:

<fmt:parseNumber var="nextLineNumberKey" type="number" value="${lineNumber+1}" /> 
<c:out value="NEXT ${hashtableObj[nextLineNumberKey+1]}" escapeXml="false"/><br/> 

有了:

<c:set var="nextLineNumberKey">${lineNumber+1}</c:set> 
<c:out value="NEXT ${hashtableObj[nextLineNumberKey]}" escapeXml="false"/><br/> 

幾個問題,但:

1)是hashtableObj真是一個哈希表或者是一個HashMap? 2)哈希表對象的值是否等於密鑰?換句話說,你期待:

上一個50

......這意味着你期待的哈希表/地圖是50和鍵也是50?

+0

謝謝。但是hashtableObj似乎沒有選擇這個值。 1。hashtableObj是一個哈希表。 2.價值實際上是一個超鏈接(我知道:)但它是一個傳統的應用程序)。我只是試圖保持簡單。 – bkrish 2014-10-07 20:43:09

+0

嘗試用
替換:
...它是否會在斜線後面返回任何內容? – alfreema 2014-10-08 00:01:14

0

我找到了解決方法。

<fmt:parseNumber var="prevLineNumberKey" type="number" value="${lineNumber-1}" /> 
    <c:out value="Previous ${hashtableObj[sortedList[prevLineNumberKey-1]]}" escapeXml="false"/><br/> 

我使用list元素作爲Hashtable的鍵,它的工作原理。感謝所有的答案。