我想在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>
答案 0 :(得分:2)
这些是Eclipse发出的错误信号,因为Eclipse在与JSP代码混合时无法正确验证JavaScript代码语法。
部署JSP,运行它,看看它在执行时是否真的有效。它可能运行正常。
答案 1 :(得分:0)
无法帮助您选择标记 - 此当前代码段无法正常工作(缺少结束标记)。如jstl foreach omit an element in last record?
中所述,在列表的每个但最后一个元素之后添加逗号怎么样?答案 2 :(得分:0)
以下方法可能有助于避免eclipse中的丑陋错误:
设置如下所示的变量:
<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>
};
并在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>