Спецификация проекта: JSF 2.1.2, Primefaces-Mobile 0.9.5, Primefaces 3.5 Я пытаюсь реализовать функцию автозаполнения поверхностей с мгновенным выбором ajax, ниже приведен код:JSF-Primefaces Autocomplete onselect прослушиватель событий не работает - Methodnotfound Exception
<pm:content>
<p:panel header="header1" toggleable="true" id="panel1">
<h:form>
<p:autoComplete value="#{analyzerFilterInput.ipAddress}"
completeMethod="#{analyzerFilterInput.getIpAddrList}">
<p:ajax event="itemSelect"
listener="analyzerFilterInput.handleSelect" update="msg" />
</p:autoComplete>
<p:messages id="msg" />
</h:form>
</p:panel>
<p:panel header="header2" toggleable="true" id="panel2">
</p:panel>
</pm:content>
View-Scoped Класс AnalyzerFilterInput
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.application.FacesMessage;
import org.primefaces.event.SelectEvent;
public class AnalyzerFilterInput implements Serializable
{
private static final long serialVersionUID = 1L;
private String ipAddress;
private List<String> ipAddrs;
public AnalyzerFilterInput()
{
ipAddrs = new ArrayList<String>();
}
public String getIpAddress()
{
return ipAddress;
}
public void setIpAddress(String ipAddress)
{
this.ipAddress = ipAddress;
}
public List<String> getIpAddrList(String query){
ipAddrs.clear();
ipAddrs.add("192.168.1.1");
ipAddrs.add("192.168.1.2");
ipAddrs.add("192.168.1.3");
return ipAddrs;
}
public void handleSelect(SelectEvent event) {
Object item = event.getObject();
FacesMessage msg = new FacesMessage("Selected", "Item:" + item);
}
}
Я получаю исключение Methodnotfound, может кто-то помочь мне в решении этого?
javax.el.MethodNotFoundException: Method not found: [email protected](org.primefaces.event.SelectEvent)
at com.sun.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:155)
at com.sun.el.parser.AstValue.invoke(AstValue.java:231)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
at org.primefaces.component.behavior.ajax.AjaxBehaviorListenerImpl.processCustomListener(AjaxBehaviorListenerImpl.java:70)
at org.primefaces.component.behavior.ajax.AjaxBehaviorListenerImpl.processArgListener(AjaxBehaviorListenerImpl.java:59)
at org.primefaces.component.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:47)
at org.primefaces.event.SelectEvent.processListener(SelectEvent.java:40)
at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:102)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:760)
at org.primefaces.component.autocomplete.AutoComplete.broadcast(AutoComplete.java:381)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:681)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:452)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:138)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:564)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:213)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1083)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:379)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:175)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1017)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:136)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:445)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:260)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:225)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.run(AbstractConnection.java:358)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:596)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:527)
at java.lang.Thread.run(Thread.java:722)
я мог бы найти Listening to onSelect events from Autocomplete (Primefaces) component отношение к моей проблеме, но нет атрибута selectlistener для primefaces автозаполнения в 3,5 релизе.
@BalusC могли бы вы помочь мне с этим вопросом? – FiendFyre
is 'listener =" analyzerFilterInput.handleSelect "' опечатка или это то, что вы действительно имеете в своем коде? Вы знаете, что у вас должно быть 'listener =" # {analyzerFilterInput.handleSelect} "правильно? – kolossus
@kolossus Я попробовал с listener = "# {analyzerFilterInput.handleSelect}", но я все равно получаю ту же ошибку. – FiendFyre