这是我的代码:
<listbox id="boxFirma" multiple="true"
visible="@load(vm.opzioneSelezionata eq 'firma' ? 'true' : 'false')"
checkmark="true" width="400px" height="200px"
model="@bind(vm.opzioniFirma)"
selectedItems="@bind(vm.pickedItemSet)">
<template name="model" var="item"
status="s">
<listitem selected="@bind(item.preSelected)">
<listcell label="@bind(item.valore)" />
</listitem>
</template>
</listbox> <button label="Salva" style="margin-top:10px" disabled="@load(empty vm.pickedUser)"
onClick="@command('salvaPersonalizzazioneUtente')" />
问题是,当我按下Salva按钮时,我只使用用户刚刚选择的项目vm.pickedItemSet
,但没有关于预选项目 - &gt; 'listitem selected="@bind(item.preSelected)" '
。因此,如果预先选择了2个项目,并且用户在视图模型上单击了一个项目,那么我只需点击一个项目,而我想要全部三项。我该如何解决这个问题?
答案 0 :(得分:0)
我认为您的问题是使用域对象的“预选”属性。如果没有您的View模型,很难理解您要实现的目标。
Hovewer,让我试着解答你:
例如,尝试使用此View Model(“SignOption”是一个具有单个成员值的bean)。 “Salva”按钮将打印出一组选定的列表项。
// a bunch of imports
public class MultiSelectionVM {
private String opzioneSelezionata = "firma";
private Set<SignOption> opzioniFirma = new HashSet<SignOption>();
private Set<SignOption> pickedItemSet = new HashSet<SignOption>();
private boolean pickedUser = true;
@Init
public void init(){
SignOption opt1 = new SignOption();
opt1.setValore("opt1");
SignOption opt2 = new SignOption();
opt2.setValore("opt2");
SignOption opt3 = new SignOption();
opt3.setValore("opt3");
//Init list model
opzioniFirma.add(opt1);
opzioniFirma.add(opt2);
opzioniFirma.add(opt3);
//Init selected Items
pickedItemSet.add(opt2);
}
@Command
public void salvaPersonalizzazioneUtente(){
System.out.println(pickedItemSet);
}
//Getters and setter for all members
}
希望这有帮助!