Ajax Primefaces自动完成(多个),处理预填充项
我有一个非常简单的Ajax Primefaces自动完成(多个),处理预填充项,ajax,primefaces,autocomplete,Ajax,Primefaces,Autocomplete,我有一个非常简单的autocomplete(多个)组件(类似于PF showcase中的组件),允许用户从下拉列表中选择项目,还有一个commandbutton将值保存到数据库中 @PostConstruct方法获取数据并在自动完成组件中预填充它们(如果找到) 问题是组件似乎无法控制那些预填充的项。例如,如果我通过单击关闭图标删除一个事件,它将从页面中消失,但是ValueChangeListener、SelectEventListener(Ajax itemselect)和UnselectEve
autocomplete
(多个)组件(类似于PF showcase中的组件),允许用户从下拉列表中选择项目,还有一个commandbutton
将值保存到数据库中
@PostConstruct
方法获取数据并在自动完成组件中预填充它们(如果找到)
问题是组件似乎无法控制那些预填充的项。例如,如果我通过单击关闭图标删除一个事件,它将从页面中消失,但是ValueChangeListener
、SelectEventListener
(Ajax itemselect)和UnselectEventListener
(Ajax unselect)中的事件对象都不会返回正确的值,而是返回null。我只能添加或删除新添加的项目。如果删除其中一个预填充项,然后单击“保存”,则所有其他预填充项都将消失
如何在自动完成中处理(删除)预填充的项目
PF version 5.2
java
private List selectedSomeObjs=new ArrayList();
@施工后
公共void init(){
this.selectedSomeObjs=SomeDb.getSavedSomeObjs();
}
public void valueChange(valuechangevent事件){
Object oldVal=event.getOldValue();//返回预填充的项
Object newVal=event.getNewValue();//如果删除其中一个预先设置的项,则返回null
}
.xhtml
请说明您的PF版本。请在PF6.0.0上测试一个较新的版本,仍然不走运。
private List<SomeObjs> selectedSomeObjs = new ArrayList<>();
@PostConstruct
public void init() {
this.selectedSomeObjs = SomeDb.getSavedSomeObjs();
}
public void valueChange(ValueChangeEvent event) {
Object oldVal = event.getOldValue(); // return prepopulated items
Object newVal = event.getNewValue(); // return null, if delete one of the prepupulated items
}
<p:autoComplete id="auto" multiple="true"
value="#{bean.selectedSomeObjs}"
completeMethod="#{bean.autoComplete}" var="v"
itemLabel="#{v.desc}" itemValue="#{v}" autocomplete="true" maxResults="15"
minQueryLength="1" queryDelay="100" forceSelection="true" cache="true"
valueChangeListener="#{bean.valueChange}">
<o:converter converterId="omnifaces.ListConverter" list="#{bean.objsList}"/>
<p:ajax event="itemUnselect" listener="#{bean.selectListener}"/>
<p:ajax event="itemSelect" listener="#{bean.unselectListener}"/>
</p:autoComplete>