EL 表达式中的 JavaScript 变量

标签 javascript el

在我的 servlet 中,我通过 for 循环将许多值发送回 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表达式的一部分。是否可以?如果是,怎么做?
谢谢...

最佳答案

您在这里犯了一个概念错误。 Java/JSP/EL 在网络服务器上运行并生成 HTML/CSS/JS,而 HTML/CSS/JS 又在网络浏览器中运行(右键单击网络浏览器中的页面,然后执行查看源代码自行查看)。然而您期望 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>

请注意,这个特定的构造很笨拙并且有代码味道。具体的功能需求并不完全清楚,因此不可能为您想要实现的任何目标提出更优雅的解决方案。

关于EL 表达式中的 JavaScript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13786167/

相关文章:

javascript - Google+ API 不返回我 friend 的 friend

javascript - 如何分配新的 ascii 键码值

javascript - 使用唯一标识符将用户数据存储在 firebase 中

java - 使表格行可点击并将 post 参数传递给 jquery 函数

jsf - EL中用于动态ResourceBundle键的字符串连接

javascript - Jasmine 单元测试失败?

php - 验证客户端 JavaScript 事件的最佳方法

javascript - PrimeFaces p :blockUI blocking a certain component dynamically (on JSF EL condition)?

java - 不显示表达式语言的值

java - JSP 无法正确评估数组索引