如何在 javascript 代码中使用 jsp jstl set 属性

How to use jsp jstl set attribute in javascript code

我在 jsp 页面中使用 boostarp 选项卡。

<ul class="nav nav-tabs" id="courseSearchTabs">
                <li role="presentation">
                    <a id="stark" data-toggle="tab" href="#filter">${messages.all_courses}</a>
                </li>
                <li role="presentation">
                    <a id="he" data-toggle="tab" href="#isbn">${messages.custom_courses}</a>
                </li>
    </ul>


    <div class="tab-content">
        <div id="filter" class="tab-pane fade in active">
          <h3>HOME</h3>
          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
        </div>
        <div id="isbn" class="tab-pane fade">
          <h3>Menu 1</h3>
          <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
        </div>

    </div>

当 boostrap 选项卡处于 onchange 状态时,我们在请求范围上设置一个属性,如下所示

 <script>

    $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
        var tab = $(e.target);
        var contentId = tab.attr("id");

        if(contentId == 'stark') {
            <c:set var="coursestype" value="stark" scope="request"/>

        }else if(contentId == 'he') {
            <c:set var="coursestype" value="he" scope="request"/>

        }

    });

</script>

然后我尝试将 jstl 设置值输出为 follow.but 我得到相同的值并且当我滑动 boostrap 选项卡时值没有改变。

 <c:out value="${requestScope.coursestype}"/>

简单的答案是,你不能这样做。

You can get javascript value from JSTL,but you can not get jstl value set by javascript

javascript是客户端语言,JSTL是服务器端语言,在HTTP中首先我们需要发送请求然后我们可以从服务器接收响应 所以我们不能在没有请求的情况下以服务器语言设置值。

当你查看页面的 html 来源时,你会发现 jstl 值已经计算出来,<c:out value="${requestScope.coursestype}"/> 在你的情况下将变为空