Primefaces拾取列表在传输时更新目标列表

Primefaces拾取列表在传输时更新目标列表,primefaces,target,transfer,Primefaces,Target,Transfer,当用户将一个项目从一个列表转移到另一个列表时,我想更新bean中的列表。有办法吗 谢谢。我不知道你到底想要什么。这是自动完成的,就像您在p:inputText中键入内容一样,它在bean属性中可用,表示p:inputText的值,无需手动更新 只需使用getTarget()或getSource()方法访问pickList中的更新值即可。您可能正试图直接访问提供给DualListModel的列表,如: DualListModel<fooType> fooModel = new Dual

当用户将一个项目从一个列表转移到另一个列表时,我想更新bean中的列表。有办法吗


谢谢。

我不知道你到底想要什么。这是自动完成的,就像您在
p:inputText
中键入内容一样,它在bean属性中可用,表示
p:inputText
的值,无需手动更新

只需使用
getTarget()
getSource()
方法访问
pickList
中的更新值即可。您可能正试图直接访问提供给
DualListModel
列表,如:

DualListModel<fooType> fooModel = new DualListModel<fooType>(fooList1,fooList2);
// transfer item
// check if fooList2 is updated - this is wrong, it is **not** updated
fooModel.getTarget(); // this way you can get the actual values of target list 
DualListModel fooModel=新的DualListModel(傻瓜1,傻瓜2);
//转移项目
//检查是否更新了傻瓜2-这是错误的,它是**未**更新的
fooModel.getTarget();//这样您就可以得到目标列表的实际值
目标
-右侧,
-xhtml中
选取列表的左侧

<p:pickList value="#{myBean.myDepartment}" onTransfer="handleTransfer(e)"....>

在bean中:

List<Department> selectedDepartments = new ArrayList<Department>();
List<Department> availableDepartments = getAvailableDepartments();

private DualListModel<Department> myDepartment;
myDepartment = new DualListModel<Department>(availableDepartments, selectedDepartments);
List selectedDepartments=new ArrayList();
列出可用部件=getAvailableDepartments();
私营部门;
myDepartment=新的DualListModel(可用部门、选定部门);
提交时,可以使用selectedDepartments访问用户选择的部门

还有剧本

<script type="text/javascript">
function handleTransfer(e) {
    item = e.item;
    alert(item.text());

    fromList = e.from;
    toList = e.to;
    type = e.type; //type of transfer; command, dblclick or dragdrop)
}
</script>

功能手柄传输(e){
项目=e.项目;
警报(item.text());
fromList=e.from;
toList=e.to;
type=e.type;//传输类型;命令、dblclick或dragdrop)
}

比这更复杂。我想做的是下一件事。当我只点击一个目标项目时,显示一个outputpanel。我已经这样做了,但没有正确,因为当我点击一个源项目时,输出面板也会显示出来,因此,我需要在Bean中检查该项目是否在目标或源上,并且我不能提交它,我不能用按钮“确认”或类似的方式(不能是因为项目的需求)。因此,我需要在将项目移动到目标时更新bean中的列表。我不知道现在是不是更清楚了…对不起。要求尚不明确。在我的示例中,当项目从源移动到目标时,所选项目将自动推送到所选部门的列表中。因此,所选项目在selectedDepartments列表中可供进一步处理,如您所说,提交时,selectedDepartments可供访问,但仅当您将项目拖动到目标时(无提交过程)。这就是我想要的,在onTransfer事件中,像提交操作一样进行更新目标列表。现在是否清除?除非发生页面提交,否则不会调用pickList的valueChangeListener。所以,您无法跟踪在服务器端添加的项目。遗漏的选项是客户端onTransfer。用同样的方法更新了答案。@rags我们怎样才能得到物品的价值?