【问题标题】:Can I use JSTL choose tag with foreach tag in javascript?我可以在javascript中使用带有foreach标签的​​JSTL选择标签吗?
【发布时间】:2013-10-31 09:45:44
【问题描述】:

我想在 javascript 中使用 JSTL 库。

我的代码如下。

<script type="text/javascript">
var grid_data = 
[
<c:forEach items="${LIST}" var="list" varStatus="status">               
<c:if test="${ status.index == 0 }">
{id:'${list.NOTICE_ID}'}
</c:if>
</c:forEach>
];
</script>

此代码运行良好,但不适用于选择标签。
有什么特别的原因吗?有人可以帮帮我吗?

// Syntax error on tokens ** especially in script not in html body **
<script type="text/javascript">
var grid_data = 
[ 
<c:forEach items="${LIST}" var="list" varStatus="status">               
<c:choose>
<c:when test="${ status.index == 0 }">
{id:'${list.NOTICE_ID}'}
</c:when>
<c:otherwise>
,    {id:'${list.NOTICE_ID}'}
</c:otherwise>
</c:choose>
</c:forEach>
]
</script>

【问题讨论】:

  • 定义“它不工作”。怎么了? &lt;/c:choose&gt; 在哪里。两种情况都会产生什么?
  • 抱歉,出现编辑错误。我添加了 标签。 “它不工作”意味着有一个错误。 - “标记的语法错误。删除这些标记。”

标签: foreach jstl


【解决方案1】:

这些是 Eclipse 发出的错误信号,因为 Eclipse 在与 JSP 代码混合时无法正确验证 JavaScript 代码语法。

部署 JSP,运行它,看看它在执行时是否真的有效。它可能会运行良好。

【讨论】:

    【解决方案2】:

    无法帮助您选择标签 - 此当前代码 sn-p 无法工作(缺少结束标签)。如jstl foreach omit an element in last record 中所述,在列表的最后一个元素之后添加逗号怎么样?

    【讨论】:

    • 感谢 kojotak!但脚本中仍然有错误(不在 html 正文中)。
    • 这看起来像 IDE 配置问题 - 你使用的是哪一个,Eclipse?您的文件是混合了 javascript 和 JSTL 循环的 .jsp 还是 .js
    【解决方案3】:

    以下方法可能有助于避免 eclipse 中的丑陋错误:

    1. 如下所示设置一个变量:

      <c:set var="newVariable">
      {
      <c:forEach var="entry" items="${variableFromServerAsMap}" varStatus="status">
          "<c:out value='${entry.key}'/>" : "<c:out value='${entry.value}'/>}"<c:if test="${not status.last}">,</c:if>
      </c:forEach>
      };
      

    2. 并在 javascript 部分中使用 newVariable 变量,如下所示:

      <script type="text/javascript">
          var my_js_data = <c:out value="${newVariable}" escapeXml="false"/>
      </script>
      

    输出应该类似于以下内容:

    <script type="text/javascript">
        var my_js_data = {
    
                "some_param_key" : "some_param_value",
                "some_param_key_2" : "some_param_value_2",
    
        };
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多