如何在<c:foreach>开始值中使用脚本变量

时间:2018-03-24 18:25:24

标签: javascript jquery foreach jstl numberformatexception

这是我的jsp源

<select id="preferAgeStart" name="preferAgeStart">
                        <c:forEach begin="20" end="35" step="1" var="age">
                            <option value=${age }>${age }</option>
                        </c:forEach>
                    </select>

我想添加select tag id =&#39; preferAgeEnd&#39;使用&#39; preferAgeStart&#39;的值作为c的起始值:forEach。 这是我的代码。

$("#preferAgeStart").change(function(){
        var preferAgeStartStr = $(this).val();
        var preferAgeStart = parseInt(preferAgeStartStr);
        $('#preferAgeEnd').remove();
         $("#preferAgeStart").after(
            "<select id='preferAgeEnd' name='preferAgeEnd'>"
            + "<c:forEach begin='"
            + preferAgeStart
            + "' end='35' step='1' var='age'>"
            + "<option value=${age }>${age }</option>"
            + "</c:forEach>"
            + "</select>");

但它有NumberForamtException

java.lang.NumberFormatException: For input string: ""
            + preferAgeStart 
            + ""

如何使用preferAgeStart作为int值?

1 个答案:

答案 0 :(得分:0)

考虑事情的执行时间。 JSTL在服务器上执行,结果发送到浏览器。 JQuery由浏览器执行。

因此,在将页面发送到浏览器之前,SERVER正在尝试执行以下操作:

<c:forEach begin='"
+ preferAgeStart
+ "' end='35' step='1' var='age'>

服务器不知道preferAgeStart是什么,因为它不是一个变量,直到 页面加载后用户更改了选择值,因此错误。

对于您的代码,您应该执行客户端循环,而不是服务器端循环。

for(var i=0; i<5; i++){ 
//do something
}