ZK zul遍历枚举映射以填充网格

时间:2013-11-27 10:07:58

标签: java enums zk

我在使用EnumMap作为bind填充网格时遇到问题:

<grid sizedByContent="true" span="true" model="@bind(vm.pendingRequests[RequestType.RETURN])" 
emptyMessage="Nessuna richiesta trovata" height="100%" width="100%">

在视图模型中有地图声明:

private Map<RequestType, List<PendingRequest>> pendingRequests;

其中RequestType是枚举:

public enum RequestType {
    EXIT("exit"),
    RETURN("return"),
    PARKING("park");

    private final String description;

    private RequestType(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }

    public static RequestType getEnum(String value) {
        if (value == null) {
            throw new IllegalArgumentException();
        }
        for (RequestType v : values()) {
            if (value.equalsIgnoreCase(v.getDescription())) {
                return v;
            }
        }
        throw new IllegalArgumentException();
    }
}

你知道在使用EnumMap填充网格时我错了吗?

非常感谢!

2 个答案:

答案 0 :(得分:2)

所以我们走了:

您无法直接访问static班级成员。这也适用于enum,它在某种程度上是相同的。所以你必须使用这个小解决方法...

  1. 为枚举项创建一个getter:

    public EnumType getTypeItem() {
      return EnumType.Item;
    }
    
  2. ZUL

    中使用此getter
    <label value="@load(vm.typeItem)">
    

答案 1 :(得分:0)

根据@bidifx的建议,我以这种方式改变了zul:

<grid sizedByContent="true" span="true" model="@load(vm.getPendingRequests('RETURN'))" 
       emptyMessage="Nessuna richiesta trovata" height="100%" width="100%">

在视图模型中,我创建了一个直接将列表返回到zul的方法:

public List<PendingRequest> getPendingRequests(String stype) {
        RequestType type = RequestType.valueOf(stype);
        return pendingRequests.get(type);
    }

这对我有用。 谢谢大家!