jsf - PrimeFaces autocomplete: itemSelect versus change events -


i need trigger ajax update upon change text box, <p:autocomplete> component. have observed if user opts type text manually, event change, whereas if user clicks 1 of suggestions autocomplete, event itemselect. added 2 <p:ajax> children input, each calling same method , having same update list, 1 having event="change" , other event="itemselect".

however, discover odd. example, while in normal server mode opened page , typed "12". autocomplete offered "1233" , "1234" suggestions. clicked "1233" , seemingly nothing happened. clicked again , else filled in.

repeat in debugger breakpoint on event handler, , can see after first click, value "12" , on second click, becomes "1233".

by switching commenting out 2 different <p:ajax> can see different consequences. without "change" one, handler never called if user selects autocomplete suggestion, , without "itemselect" one, handler never called if user types manually. both of them, there 2 calls, , i'm sure there complaints double-click.

some pseudo-code like, first xhtml:

<p:autocomplete id="itemid" value="#{mybacker.mybean.itemnumber}"     required="true" completemethod="#{mybacker.idautocomplete}">     <p:ajax event="itemselect" update="beandetails"         listener="#{mybacker.idchangeeventlistener()}" />     <p:ajax event="change" update="beandetails"         listener="#{mybacker.idchangeeventlistener()}" /> </p:autocomplete> <h:panelgroup id="beandetails">     <h:panelgroup rendered="#{not empty mybacker.mybean.institutionname}">         <h:outputtext value="#{mybacker.mybean.institutionname}" />         <!-- continues address, phone, etc..  -->     </h:panelgroup> </h:panelgroup> 

then java backing bean code:

public void idchangeeventlistener() {     mybean = mydao.getdetails(mybean);     //  couple of init-type method calls } 

give parent tag widgetvar attribute, add little attribute <p:ajax event="change" ...> child tag:

onstart="if(widgetvarname.panel.is(':visible')) return false;"  

when question written, on primefaces version 3.5, if recall correctly. since then, need update solution to:

onstart="if(pf('widgetvarname').panel.is(':visible')) return false;" 

with mwalter pointing out change.


Comments

Popular posts from this blog

How to remove text and logo OR add Overflow on Android ActionBar using AppCompat on API 8? -

html - How to style widget with post count different than without post count -

url rewriting - How to redirect a http POST with urlrewritefilter -