2012-12-09 35 views
0

在我的servlet我被循環發送多個值回JSP頁面這樣的:JavaScript變量

protected void doGet(HttpServletRequest request, HttpServletResponse response){ 
    for (int i = 0; i < veryBigNumber; i++){ 
     if (something){ 
      request.setAttribute("value" + i, "true"); 
     else{ 
      request.setAttribute("value" + i, "false"); 
    } 
} 

而在JSP我想以同樣的方式與讀取它們JavaScript和EL:

<script> 
    for (var i=0; i < veryBigNumber; i++){ 
     if ("${value + (i)}" == "true"){ 
      doSomething; 
     } else{ 
      doSomethingElse; 
    } 
} 
</sctipt> 

的問題是我不知道如何使變量 EL表達式的一部分。可能嗎?如果是,如何?
謝謝...

+0

我知道這是一箇舊帖子,但我想我會這樣說:這個問題被降低爲-1。然而,這些概念誤解在編碼世界中是非常普遍的。找到這樣的問題的答案可能非常困難,因爲這是一個概念誤解。我認爲這些不值得被低估。我對jsp有一些經驗,但暫時休息一下,並想知道同樣的事情。這個問題和答案對我來說極其有用,即使它只能讓我想起我已經知道的事情。 – KjetilNordin

回答

2

你在這裏犯了一個概念錯誤。 Java/JSP/EL在web服務器上運行並生成HTML/CSS/JS,然後運行在webbrowser中(右鍵單擊webbrowser中的頁面並執行查看源代碼以自己查看)。然而,你期望EL和JS在網頁瀏覽器中同步運行。這不是真的。

您基本上需要使用JSP來執行迭代和EL評估,並相應地編寫它,以便打印出您想要的正確JS代碼。

<script> 
    <c:forEach begin="0" end="${veryBigNumber - 1}" var="i"> 
     <c:set var="value" value="value${i}" /> 
     <c:choose> 
      <c:when test="${requestScope[value]}"> 
       doSomething; 
      </c:when> 
      <c:otherwise> 
       doSomethingElse; 
      </c:otherwise> 
     </c:choose> 
    </c:forEach> 
</script> 

請注意,這個特定的構造是笨拙的和代碼氣味。具體的功能需求並不完全清楚,因此無論您想要實現什麼目標,都無法提出更優雅的解決方案。