Primefaces 将源列表保留在选择列表中

Primefaces 将源列表保留在选择列表中,primefaces,picklist,Primefaces,Picklist,我在我的项目中实现了一个选择列表 我试图改变这种观点的逻辑以适应我的行动。我希望保持SourceList不变,仅当给定的itemScope不在targetList中时才更改targetList 我的做法: public void onTransfer(TransferEvent event) { // wenn wir eine Sprache aktivieren möchten, sollte die sprache nicht // aus der source ent

我在我的项目中实现了一个选择列表

我试图改变这种观点的逻辑以适应我的行动。我希望保持SourceList不变,仅当给定的itemScope不在targetList中时才更改targetList

我的做法:

public void onTransfer(TransferEvent event) {

    // wenn wir eine Sprache aktivieren möchten, sollte die sprache nicht
    // aus der source entfernt werden
    if (event.isAdd()) {
        List<String> itemsInScope = (List<String>) event.getItems();
        itemsInScope.addAll(languages.getSource());
        languages.setSource(itemsInScope);

        for(String s : languages.getSource())
            System.out.println(s);
    }


    settingsObject.setActiveLanguages(languages.getTarget());
    settingsObject.setSupportedLanguages(languages.getSource());

    TranslationConfig conf1 = new TranslationConfigManager().getSettings();

    conf1.setActiveLanguages(languages.getTarget());
    conf1.setSupportedLanguages(languages.getSource());

    new TranslationConfigManager().updateSetting(conf1);
}
public void onTransfer(transfervent事件){
//如果你是一个好朋友,那你就不要去了
//来源:安特弗恩特·沃登(aus der source entfernt werden)
if(event.isAdd()){
List ItemsScope=(List)event.getItems();
itemsInScope.addAll(languages.getSource());
languages.setSource(ItemsScope);
对于(字符串s:languages.getSource())
系统输出打印项次;
}
settingsObject.setActiveLanguages(languages.getTarget());
settingsObject.setSupportedLanguages(languages.getSource());
TranslationConfig conf1=新建TranslationConfigManager().getSettings();
conf1.setActiveLanguages(languages.getTarget());
conf1.setSupportedLanguages(languages.getSource());
新建TranslationConfigManager().updateSetting(conf1);
}
这在逻辑上适用于DualList,因为它返回正确的填充列表,但它有点变通和肮脏。这里的问题是它仍然会删除视图中的项


我的方法可能吗?

我遇到了同样的问题,我所做的只是在TransferEvent上,我用初始源和事件目标重新创建了pickList,如本例所示

List<String> initialSource;

...(Code to fill the initial list)...

public void onTransferSeccion(TransferEvent event){
    originalPickList= new DualListModel(initialSource, originalPickList.getTarget());
}
列出初始源代码;
…(填充初始列表的代码)。。。
公共交通安全(交通事件){
originalPickList=新的DualListModel(initialSource,originalPickList.getTarget());
}

尝试了此解决方案。同样的问题。objejts中的逻辑是正确的,但是Ui组件(Picklist)仍然显示错误的内容。您正在更新xhtml中的Picklist吗?由于您正在更改选择列表的值,因此必须处理并更新选择列表才能使其生效