假设我有这样的循环:
<t:loop source="rolesToDisplay" value="selectedRole">
<t:palette t:id="paletteSubjects" clientId="${prop:paletteSubjectsId}" model="availableSubjects.get(selectedRole)"
selected="selectedSubjects.get(selectedRole)" encoder="stringValueEncoder"/>
</t:loop>
我正在为List<String>
中的每个角色保留一些可用和选定的主题(HashMap<String, List<String>>
)。
这样我可以查看每个角色的主题,但是如何更新和提交ech角色的值呢?
如果我尝试将其更改为:
<t:loop source="rolesToDisplay" value="selectedRole">
<t:palette t:id="paletteSubjects" clientId="${prop:paletteSubjectsId}" model="availableSubjects.get(selectedRole)"
selected="selected" encoder="stringValueEncoder"/>
</t:loop>
与
public List<String> getSelected()
{
return selectedSubjects.get(selectedRole);
}
public void setSelected(final List<String> sel)
{
selectedSubjects.get(selectedRole).addAll(sel);
}
我在提交时遇到错误:组件user / Edit的参数'selected':palettesubjects绑定为null。此参数不允许为空。
我打赌还有另一种方式......
答案 0 :(得分:0)
我不确定,但您可能需要初始化第一个条目的列表?
public List<String> getSelected() {
if (!selectedSubjects.containsKey(selectedRole)) {
selectedSubjects.put(selectedRole, new ArrayList<String>());
}
return selectedSubjects.get(selectedRole);
}
public void setSelected(final List<String> sel) {
List<String> selected = getSelected();
selected.clear();
selected.addAll(sel);
}