Html 如何在JSTL代码中访问ng repeat$index变量?

Html 如何在JSTL代码中访问ng repeat$index变量?,html,angularjs,jsp,jstl,el,Html,Angularjs,Jsp,Jstl,El,我有一个div块,它使用ng repeat。在这个角度循环中,我需要JSTL中有一个循环,但是对于这个内部循环,我需要角度循环的当前索引 假设这是基本结构: <div ng-repeat="foo in fooBarCtrl.blah | orderBy: '_order' track by $index"> <c:forEach var="element" items="${JSTLarray[**NEED_ANGULAR_INDEX_HERE**]}">

我有一个div块,它使用ng repeat。在这个角度循环中,我需要JSTL中有一个循环,但是对于这个内部循环,我需要角度循环的当前索引

假设这是基本结构:

<div ng-repeat="foo in fooBarCtrl.blah | orderBy: '_order' track by $index">
    <c:forEach var="element" items="${JSTLarray[**NEED_ANGULAR_INDEX_HERE**]}">
        <c:out value="foobar" />
    </c:forEach>
</div>

由于angular和JSP的操作方式,我甚至不确定是否有可能直接访问JSTL代码中的$index变量。然而,我正试图想出解决这个问题的其他办法


如何获取JSTL/EL父循环中角度循环的当前索引?

您最好将JSTLArray序列化为JSON,并以某种方式通过
ng init
传递,并将迭代保留为
ng repeat
,而不是
c:forEach
。很难将这两个世界混合在一起,因为一个是服务器端渲染,另一个是客户端渲染,所以很明显,您无法访问JSTL中的
$index
,因为只有在编译页面并将其发送到客户端之后,才会对其进行评估

我过去绕过这个限制的方法是使用一个自定义JSTL函数,比如
${lib:toJSON(JSTLArray)}
,它将通过Jackson库将所述数组转换为JSON(或任何Java bean)。通过这种方式,现在可以使用Angular渲染数组的内容。然后,我将在Angular控制器中创建一个“init”函数,并将该JSON传入,然后对其执行任何操作。init调用类似于
nginit=“fooBarCtrl.someInitFunction(${lib:toJSON(JSTLArray)})”

下面是我之前编写的
toJson
方法的代码片段

`

`


希望这有所帮助。

JSTL在服务器端呈现,Angular是在客户端运行的javascript框架。。。我认为在客户端访问javascript变量可能是一个挑战。您可能可以像在JSF中一样,在服务器端使用局部呈现来实现这一点。
import org.codehaus.jackson.map.ObjectMapper;

import java.io.IOException;

public class CustomFunctions {

    /**
     * Serializes a Java object to a Json string.
     *
     * @param object
     * @return
     */
    public static String toJson(Object object) {

        ObjectMapper mapper = new ObjectMapper();
        String json = "{}";
        try {
            json = mapper.writeValueAsString(object);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return json;
    }
}