2016-09-08 38 views
1

我在我的项目中实现了选择列表。在Primefaces选项列表中保留源列表

Docu for picklist

我试图改变这种观点的逻辑,以适应我的行动。我想离开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); 
} 

这工作逻辑上与DualList因为它返回正确填写清单,但它有点一种变通方法和肮脏。这里的问题是它仍然删除视图中的项目。

我的方法甚至有可能吗?

回答

0

我有同样的问题,我所做的只是在TransferEvent,我重新领料与最初的源广告与活动对象的目标就像这个例子

List<String> initialSource; 

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

public void onTransferSeccion(TransferEvent event){ 
    originalPickList= new DualListModel(initialSource, originalPickList.getTarget()); 
} 
+0

试过这种solution.Same问题。对象中的逻辑是正确的,但Ui-Component(Picklist)仍然显示错误的内容。 – Offset

+0

您是否在更新xhtml中的选项列表? 由于您正在更改领料单的价值,因此您必须处理并更新领料单才能运作 –