Primefaces JSF java.lang.NullPointerException: Argument Error: Parameter text is null
11,301
You are not getting values properly from your loadNames()
into your bottom loop.
Example :
Map<String,String> map = new LinkedHashMap<String,String>();
map.put("Smith", "S");
map.put("Jones", "J");
System.out.println(map.get(0));
will return null
.
You need to change your loop like that :
public void init()
{
empFilter= new SelectItem[loadNames().size() + 1];
empFilter[0] = new SelectItem("", "Select");
int i = 1;
for(Map.Entry<String,String> entry : loadNames().entrySet())
{
empFilter[i++] = new SelectItem(entry.getKey(),entry.getValue());
System.out.println(entry.getKey() + "/" + entry.getValue());
}
}
Comments
-
Jacob almost 2 years
I am using JSF 2.0 with Primefaces 3.4.2,when I run my application, I am getting the following exception
java.lang.NullPointerException: Argument Error: Parameter text is null at com.sun.faces.renderkit.html_basic.HtmlResponseWriter.writeText(HtmlResponseWriter.java:877) at org.primefaces.component.datatable.DataTableRenderer.encodeFilter(DataTableRenderer.java:450) at org.primefaces.component.datatable.DataTableRenderer.encodeColumnHeader(DataTableRenderer.java:360) at org.primefaces.component.datatable.DataTableRenderer.encodeThead(DataTableRenderer.java:551) at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:218) at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:192) at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:74) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
JSF Code Snippet
<p:column id="empName" headerText="Name" filterBy="#{emp.empName}" filterOptions="#{myMB.empFilter}" filterMatchMode="exact"> <h:outputText value="#{emp.empName}"/> </p:column>
And in my ManagedBean
public Map<String,String> loadNames() { names = new LinkedHashMap<String,String>(); names.put("Smith", "S"); names.put("Jones", "J"); return names; } private SelectItem[] empFilter; public void init() { empFilter= new SelectItem[loadNames().size() + 1]; empFilter[0] = new SelectItem("", "Select"); for (int i=1; i< empFilter.length; i++) { empFilter[i] = new SelectItem(loadNames().get(i-1), loadNames().get(i-1)); }
}
-
Jacob almost 11 yearsAlexandre Lavoie it worked. Thanks a lot for pointing it correctly. Appreciated.