我在使用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填充网格时我错了吗?
非常感谢!
答案 0 :(得分:2)
所以我们走了:
您无法直接访问static
班级成员。这也适用于enum
,它在某种程度上是相同的。所以你必须使用这个小解决方法...
为枚举项创建一个getter:
public EnumType getTypeItem() {
return EnumType.Item;
}
在ZUL
<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);
}
这对我有用。 谢谢大家!