需要将Java中的数组传递给javascript

需要将Java中的数组传递给javascript,java,javascript,playframework,Java,Javascript,Playframework,我正在使用PlayFramework1.x 有没有办法将数组作为Javascript数组从控制器传递到模板?您实际上似乎混淆了服务器端代码和客户端代码 Java代码在服务器上运行,而javascript代码在浏览器中运行。您不能真正地将数组从Java“传递”到Javascript 但是Javascript代码可以调用服务器从Java代码中获取值(例如,使用AJAX),或者Java代码可以编写声明数组变量的Javascript代码,该Javascript代码可以在视图中与HTML一起使用 干杯 G

我正在使用PlayFramework1.x


有没有办法将数组作为Javascript数组从控制器传递到模板?

您实际上似乎混淆了服务器端代码和客户端代码

Java代码在服务器上运行,而javascript代码在浏览器中运行。您不能真正地将数组从Java“传递”到Javascript

但是Javascript代码可以调用服务器从Java代码中获取值(例如,使用AJAX),或者Java代码可以编写声明数组变量的Javascript代码,该Javascript代码可以在视图中与HTML一起使用

干杯


Grooveek实际上似乎混淆了服务器端代码和客户端代码

Java代码在服务器上运行,而javascript代码在浏览器中运行。您不能真正地将数组从Java“传递”到Javascript

但是Javascript代码可以调用服务器从Java代码中获取值(例如,使用AJAX),或者Java代码可以编写声明数组变量的Javascript代码,该Javascript代码可以在视图中与HTML一起使用

干杯


Grooveek将在您从javascript发布或获取到Java时自动映射参数。您可以使用renderJSON方法将对象从Java传递到javascript。然后使用类似jQuery的东西将其映射到数组。也许如果你给我们一些背景,我们可以帮你多一点

    public static void getContactsTable() {
    List<Contacts> contacts = Contacts.findAllOrderByInserted();
    renderJSON(contacts);
}
这是我做过的海图的一个小例子

下面是另一个示例,它使用另一种方法,然后将数据发送回页面以在页面上呈现

    public static void testing(List<Long> selected) {

    List<Contacts> contacts = new ArrayList<Contacts>();

    for (Long index : selected) {
        Contacts contact = contactService.findById(index);
        contacts.add(contact);
    }
    renderJSON(contacts);
}
公共静态无效测试(选择列表){
列表联系人=新建ArrayList();
用于(长索引:选定){
Contacts contact=contactService.findById(索引);
联系人。添加(联系人);
}
renderJSON(联系人);
}
这需要一个javascript数组。正如您所看到的,映射将自动映射为一个列表。不过,您也可以使用java数组

这是javascript函数

       var template = 'selectedTemplate';
 var selectedOutput = '#selectedOutput';
        $.post('@{ViewContacts.testing()}',{ selected : selected }, function(data) {
                    $(selectedOutput).html(tmpl(template, { items:data }));  
                });

    <div id="selectedOutput">
        <script id="selectedTemplate" type="text/html">

            <% for (var i = 0; i < items.length; i++) { 
            var item = items[i];
            %>

            <li><%= item.name %> - <%= item.email %></li>
            <% } %>  

        </script>
    </div>
var模板='selectedTemplate';
var selectedOutput='#selectedOutput';
$.post('@{ViewContacts.testing()}',{selected:selected},函数(数据){
$(selectedOutput.html(tmpl(模板,{items:data}));
});
  • -

  • 正如您所看到的,这也是一个ajax请求。我将获取所选数据(它只是一个所选节点的数组),然后将其传递到函数中。然后我返回数据(函数(数据))并将其映射到items数组。我使用ejohn作为模板。

    Play将在您从javascript发布或获取到Java时自动映射您的参数。您可以使用renderJSON方法将对象从Java传递到javascript。然后使用类似jQuery的东西将其映射到数组。也许如果你给我们一些背景,我们可以帮你多一点

        public static void getContactsTable() {
        List<Contacts> contacts = Contacts.findAllOrderByInserted();
        renderJSON(contacts);
    }
    
    这是我做过的海图的一个小例子

    下面是另一个示例,它使用另一种方法,然后将数据发送回页面以在页面上呈现

        public static void testing(List<Long> selected) {
    
        List<Contacts> contacts = new ArrayList<Contacts>();
    
        for (Long index : selected) {
            Contacts contact = contactService.findById(index);
            contacts.add(contact);
        }
        renderJSON(contacts);
    }
    
    公共静态无效测试(选择列表){
    列表联系人=新建ArrayList();
    用于(长索引:选定){
    Contacts contact=contactService.findById(索引);
    联系人。添加(联系人);
    }
    renderJSON(联系人);
    }
    
    这需要一个javascript数组。正如您所看到的,映射将自动映射为一个列表。不过,您也可以使用java数组

    这是javascript函数

           var template = 'selectedTemplate';
     var selectedOutput = '#selectedOutput';
            $.post('@{ViewContacts.testing()}',{ selected : selected }, function(data) {
                        $(selectedOutput).html(tmpl(template, { items:data }));  
                    });
    
        <div id="selectedOutput">
            <script id="selectedTemplate" type="text/html">
    
                <% for (var i = 0; i < items.length; i++) { 
                var item = items[i];
                %>
    
                <li><%= item.name %> - <%= item.email %></li>
                <% } %>  
    
            </script>
        </div>
    
    var模板='selectedTemplate';
    var selectedOutput='#selectedOutput';
    $.post('@{ViewContacts.testing()}',{selected:selected},函数(数据){
    $(selectedOutput.html(tmpl(模板,{items:data}));
    });
    
  • -
  • 正如您所看到的,这也是一个ajax请求。我将获取所选数据(它只是一个所选节点的数组),然后将其传递到函数中。然后我返回数据(函数(数据))并将其映射到items数组。我使用ejohn作为模板