0

私のサーブレットでは、次のようなサイクルで多くの値をJSPページに送り返しています

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>

問題は、変数iをEL式の一部にする方法がわからないことです。出来ますか?はいの場合、どのように?
ありがとう...

4

1 に答える 1

2

ここで概念的な間違いを犯しています。Java/JSP/EL は Web サーバー上で実行され、Web ブラウザーで実行される HTML/CSS/JS を生成します (Web ブラウザーでページを右クリックし、ソースを表示して自分で確認します)。それでも、EL と JS が Web ブラウザーで同期して実行されることを期待しています。本当じゃない。

基本的には、代わりに 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>

この特定の構造はぎこちなく、コードのにおいがすることに注意してください。具体的な機能要件は明確ではないため、達成しようとしているものに対してより洗練されたソリューションを提案することはできません。

于 2012-12-10T13:04:11.480 に答える