在javascript中使用ModelAndView对象属性

时间:2014-06-24 09:16:04

标签: javascript html dom

我从Controller中返回一个列表作为列表进行查看,我将这个列表对象传递给我的javascript函数

window.onload = function() {
 showDirectory("$(S3DirectoryList)");
};

S3DirectoryList是从控制器返回的对象。

这是我的模特课

class Directory {
    String folderName;
    HashMap< String, String> objects;
    List<Directory> dChild;
}

我想在函数中使用folderName的{​​{1}}属性。

目前我的javascript函数定义如下

Directory

1 个答案:

答案 0 :(得分:1)

我在您的Directory类中添加了一些代码。如果你运行它(我还添加了一个Main方法用于测试目的),你会看到它创建一个目录列表并将此列表序列化为JSON。我添加了一个构造函数,以便轻松创建一些目录。我还添加了一个序列化目录的getJSON方法。我添加了一个getJSON(List目录)方法来序列化目录列表。

如果您看到这个序列化列表进入您的变量S3DirectoryList,您可以将其传递给您的javascript函数,如下所示:

function showDirectory(dirList) {
    var markup = "";
    for(var i = 0; i < dirList.length; i++) {
        markup += dirList[i].folderName + "<br />";
    }
    document.getElementById("dispdir").innerHTML = markup;
}

window.onload = function() {
    showDirectory($(S3DirectoryList));
};

目录类:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class Directory{

    String folderName;
    HashMap<String, String> objects;
    List<Directory> dChild;

    public Directory(String folderName, String[] objects) {
        this.folderName = folderName;
        this.objects = new HashMap<String, String>();
        for(int i = 0; i < objects.length; i = i + 2) {
            this.objects.put(objects[i], objects[i + 1]);
        }
        this.dChild = new ArrayList<Directory>();
    }

    public void addChildDirectory(Directory childDirectory) {
        if(this.dChild == null)
            this.dChild = new ArrayList<Directory>();
        this.dChild.add(childDirectory);
    }

    public String toJSON() {
        StringBuilder b = new StringBuilder();
        b.append("{");
        b.append("'folderName': '").append(folderName  == null ? "" : folderName).append("'");
        b.append(",objects: {");
        if(objects != null) {
            Iterator<Map.Entry<String, String>> objectsIterator = objects.entrySet().iterator();
            if(objectsIterator.hasNext()) {
                Map.Entry<String, String> object = objectsIterator.next();
                b.append("'").append(object.getKey()).append("': '").append(object.getValue()).append("'");
            }
            while (objectsIterator.hasNext()) {
                Map.Entry<String, String> object = objectsIterator.next();
                b.append(",'").append(object.getKey()).append("': '").append(object.getValue()).append("'");
            }
        }
        b.append("}");
        b.append(",'dChild': ");
        b.append("[");
        if(dChild != null) {
            if(dChild.size() > 0)
                b.append(dChild.get(0).toJSON());
            for(int i = 1; i < dChild.size(); i++) {
                b.append(",").append(dChild.get(i).toJSON());
            }
        }
        b.append("]");
        b.append("}");
        return b.toString();
    }

    public static String getJSON(List<Directory> directories) {
        StringBuilder b = new StringBuilder();
        b.append("[");
        if(directories.size() > 0)
            b.append(directories.get(0).toJSON());
        for(int i = 1; i < directories.size(); i++) {
            b.append(",").append(directories.get(i).toJSON());
        }
        b.append("]");
        return b.toString();
    }

    private static Directory generateDirectory(int seed) {
        List<Directory> directories = new ArrayList<Directory>();
        for(int i = 0; i < 5; i++) {
            directories.add(
                    new Directory(
                            "folderName_" + seed + "_" + i, 
                            new String[]{"k_" + seed + "_" + i + "_1", "v_" + seed + "_" + i + "_1", "k_" + seed + "_" + i + "_2", "k_" + seed + "_" + i + "_2"}));
        }
        Directory directory_root = directories.get(0);
        Directory directory_1_0 = directories.get(1);
        Directory directory_1_1 = directories.get(2);
        Directory directory_1_0_0 = directories.get(3);
        Directory directory_1_0_1 = directories.get(4);
        directory_root.addChildDirectory(directory_1_0);
        directory_root.addChildDirectory(directory_1_1);
        directory_1_0.addChildDirectory(directory_1_0_0);
        directory_1_0.addChildDirectory(directory_1_0_1);
        return directory_root;
    }

    public static void main(String[] args) {
        List<Directory> directories = new ArrayList<Directory>();
        for(int i = 0; i < 2; i++) {
            directories.add(generateDirectory(i));
        }
        System.out.println(toJSON(directories));
    }

}