Need help in Richfaces suggestionbox
mvg Apr 29, 2009 3:25 AMHi all,
I am new to Richfaces and JSF. I want to develop the application in JSF which uses auto complete suggestion box. I tried richfaces suggestionbox to do that and I encountered the following error
javax.servlet.ServletException: /suggestionBox.jsp(22,20) '#{richFacesBean.autocomplete}' java.lang.NullPointerException
 javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
 org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
 org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
 org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
 org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
 org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause
org.apache.jasper.el.JspELException: /suggestionBox.jsp(22,20) '#{richFacesBean.autocomplete}' java.lang.NullPointerException
 org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:77)
 org.richfaces.component.UISuggestionBox.setupValue(UISuggestionBox.java:492)
 org.richfaces.component.UISuggestionBox.broadcast(UISuggestionBox.java:424)
 javax.faces.component.UIData.broadcast(UIData.java:854)
 org.richfaces.component.UISuggestionBox.broadcast(UISuggestionBox.java:421)
 org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
 org.ajax4jsf.component.AjaxViewRoot.broadcastAjaxEvents(AjaxViewRoot.java:340)
 org.ajax4jsf.application.AjaxViewHandler.processAjaxEvents(AjaxViewHandler.java:216)
 org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:169)
 com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
 com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
 javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
 org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
 org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
 org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
 org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
 org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause
java.lang.NullPointerException
 org.my.richfaces.RichFacesBean.autocomplete(RichFacesBean.java:100)
 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 java.lang.reflect.Method.invoke(Method.java:597)
 org.apache.el.parser.AstValue.invoke(AstValue.java:172)
 org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
 org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
 org.richfaces.component.UISuggestionBox.setupValue(UISuggestionBox.java:492)
 org.richfaces.component.UISuggestionBox.broadcast(UISuggestionBox.java:424)
 javax.faces.component.UIData.broadcast(UIData.java:854)
 org.richfaces.component.UISuggestionBox.broadcast(UISuggestionBox.java:421)
 org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
 org.ajax4jsf.component.AjaxViewRoot.broadcastAjaxEvents(AjaxViewRoot.java:340)
 org.ajax4jsf.application.AjaxViewHandler.processAjaxEvents(AjaxViewHandler.java:216)
 org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:169)
 com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
 com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
 javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
 org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
 org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
 org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
 org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
 org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
My code is
<%@taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 JSP Page
 <f:view>
 <h:form>
 <h:inputText value="#{richFacesBean.text}" id="input">
 <a4j:support event="onkeyup" reRender="radio"/>
 </h:inputText>
 <rich:suggestionbox id="radio" fetchValue="#{suggest.Name}" width="50" height="50" for="input" suggestionAction="#{richFacesBean.autocomplete}"
 var="suggest">
 <h:column>
 <h:outputText id="radio" value="#{suggest.Name}"/>
 </h:column>
 </rich:suggestionbox>
 </h:form>
 </f:view>
package org.my.richfaces;
import java.util.ArrayList;
import java.util.List;
import org.richfaces.component.html.HtmlSuggestionBox;
public class RichFacesBean {
 private String text;
 private String button;
 private ArrayList autocomplete;
 private ArrayList capitals;
 private User user;
 HtmlSuggestionBox myList = new HtmlSuggestionBox();
 public User getUser() {
 return user;
 }
 public void setUser(User user) {
 this.user = user;
 }
 public ArrayList getCapitals() {
 return capitals;
 }
 public void setCapitals(ArrayList capitals) {
 this.capitals = capitals;
 }
 public String addCapital(User user) {
 capitals.add(user);
 return null;
 }
 public RichFacesBean() {
 }
 public String getText() {
 return text;
 }
 public void setText(String text) {
 this.text = text;
 }
 public String getButton() {
 return button;
 }
 public void setButton(String button) {
 this.button = button;
 }
 public List autocomplete(Object suggest) {
 String pref = (String)suggest;
 ArrayList result = new ArrayList();
 Iterator iterator = getCapitals().iterator();
 while (iterator.hasNext()) {
 User elem = ((User) iterator.next());
 if ((elem.getName() != null && elem.getName().toLowerCase().indexOf(pref.toLowerCase()) == 0) || "".equals(pref))
 {
 result.add(elem);
 }
 }
 return result;
 }
 public void setAutocomplete(ArrayList autocomplete) {
 this.autocomplete = autocomplete;
 }
 class User
 {
 public String Name;
 ArrayList result = new ArrayList();
 public User(String name)
 {
 Name=name;
 }
 public String getName() {
 return Name;
 }
 public void setName(String itsName) {
 this.Name = itsName;
 }
 public ArrayList getResult()
 {
 return result;
 }
 public void setResult(ArrayList result) {
 this.result = result;
 }
 }
}
Please help me to solve this. Though it appears to me as a minor error. I am unable to solve this. I use Netbeans 6.5 as my IDE and Firefox as my browser. I installed Richfaceslibrary version 2 and RichfacesSupport version 2 in my netbeans.
 
     
    