【问题标题】:jstl c:set is not working on js code in jsp filejstl c:set 不适用于 jsp 文件中的 js 代码
【发布时间】:2018-07-05 11:23:58
【问题描述】:

我有一个来自服务的 JSON。我正在通过 JSON 值附加一个 html 块,我必须检查一些值以进行适当的显示。 我正在尝试设置 discountValue 变量,但它不适用于 js 变量。我该如何解决?

  if (data!="")
                {
                    $.each(data,function(index,element){
                        var intDiscount=parseInt(10);
                        console.log("intDiscount::"+intDiscount);

                        var strIndex='';
                        strIndex+='<div class="card">';
                        strIndex+='<c:set var="discountValue" value="'+intDiscount+'"/>';
                        console.log("${discountValue}");
...
...
...
...
                 }
                 $('#visilabs-FavouriteCategoryTopSeller').append(strIndex);

控制台日志:

intDiscount::10
0

【问题讨论】:

  • JSTL 在服务器端执行。 JavaScript 在客户端执行,在 JSTL 结束生成 HTML + JS 代码很久之后。这没有任何意义。
  • 要添加到 JB Nizet 的评论中,这行:strIndex+='&lt;c:set var="discountValue" value="'+intDiscount+'"/&gt;' 将始终与 strIndex+=''; 相同,即使是 ajax JS 调用的大小,因为 c:set 不会打印出任何内容。跨度>
  • 如果您已经有了 JSON- 结果,则不需要 JSTL。如果 JSON 结果在data 中,您必须从数据中提取您的值。假设您的$.each(data, function(index,element),数据是一个数组。如果是这样,您将被每个数组元素调用,并且必须使用函数的 element arg。

标签: java jsp jstl jstl-functions


【解决方案1】:

我已经通过使用 js 的 if 条件解决了它:

if(element.discount>0){
                            strIndex+=                      '           <span class="label label-danger discount">'+'%&nbsp;'+intDiscount+'</span>';
                        }

谢谢大家

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多