gpt4 book ai didi

java - 如何在 TwinColSelect 中定义所选项目的最大限制

转载 作者:行者123 更新时间:2023-11-29 05:38:27 25 4
gpt4 key购买 nike

我想在我的 vaadin ui 中的 TwinColSelect 中定义所选项目的最大数量。我怎样才能实现它。我想允许用户从可用的 8 个中仅选择 4 个行星。我当前的代码是

TwinColSelect table = new TwinColSelect();
table.setImmediate(true);

String planets[] = {"Mercury", "Venus", "Earth", "Mars",
"Jupiter", "Saturn", "Uranus", "Neptune"};
for (int pl=0; pl<planets.length; pl++)
table.addItem(planets[pl]);
table.addListener(new Property.ValueChangeListener() {

public void valueChange(ValueChangeEvent event) {
/*String [] arr=(String [] )event.getProperty().getValue();
if(arr.length>=4){
return;
}*/
}
});

最佳答案

您可以通过更改 select 的值来实现类似这样的功能:

//Constant declared somewhere in the class
private static final int SELECTED_ITEMS_LIMIT = 4;

...

table.addListener(new Property.ValueChangeListener() {

@Override
public void valueChange(ValueChangeEvent event) {
Collection selectedItems = (Collection) event.getProperty().getValue();
if(selectedItems.size()>SELECTED_ITEMS_LIMIT) { //Set no more than SELECTED_ITEMS_LIMIT values
Set<String> noMoreThanLimitItems = new HashSet<String>(selectedItems.size());
int counter = 0;
for(Object item : selectedItems) {
if(counter>=SELECTED_ITEMS_LIMIT) {
break;
}
noMoreThanLimitItems.add((String) item);
counter++;
}
event.getProperty().setValue(noMoreThanLimitItems);
}
}
});

缺点:

  • 代码在服务器端。因此,在浏览器请求之间可能会显示超过四个行星。
  • 调用 Property.setValue 会触发 ValueChangeEvent。因此,当用户尝试选择四个以上的行星时,处理代码将每次执行两次

关于java - 如何在 TwinColSelect 中定义所选项目的最大限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18605156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com