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.