获取枚举类型的所有实例的列表并在视图

时间:2015-07-01 10:06:41

标签: java spring spring-mvc enums

我有一个枚举如下:

    public static enum Status {
    UNKNOWN(0, "Unknown"), AVAILABLE(1, "Available"), ISSUED(2, "Issued"), RETURNED(
            3, "Returned"), DAMAGED(4, "Damaged"), LOST(5, "Lost"), UNDER_REPAIR(
            6, "Under Repair");

    private int id;
    private String description;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    private Status(Integer id, String description) {
        this.id = id;
        this.description = description;
    }
}

如何获取所有枚举实例的列表并迭代查看下面的内容(我使用angular js迭代下面的代码):

            <select name="status" ng-model="ticket.status">
                <option value="">----Select----</option>
                    <option ng-repeat="s in statusList" value ={{s.id}}>{{s.description}}</option>
            </select>

2 个答案:

答案 0 :(得分:2)

可以访问所有可能的枚举值:

Status.values()

https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

如果你想以角度访问这些,你应该用Java创建一个控制器,并通过角度的http请求获取这些值。

答案 1 :(得分:1)

首先,您的angularJS代码无效。你的迭代部分(状态)需要查看一个JavaScript对象数组(即状态应该是这样的对象的数组)。在您的情况下,从列出的代码中,状态似乎是指与select元素关联的对象,该元素不是任何数组。 为了做你想做的事:

  • 将枚举值列表返回给Javascript,作为对REST调用的响应(使用$ resource(“”)。query())。在服务器端,您需要开发一个REST服务(或Spring控制器),它将返回枚举值数组。实际的数组很容易获得,只需调用Status.values())。
  • 你的JSON数组看起来像[{“id:”0“,”description“:”Unknown“},{...}]
  • 从AngularJS中的$ resource()调用中获取结果并将其存储在模型中(类似于$ scope.statuses)
  • 在您的代码中迭代:(在$ scope.statuses中)。