1
votes
 Error Rendering View[test.xhtml]
                                 java.lang.NullPointerException
    at org.primefaces.component.orderlist.OrderListRenderer.encodeOptions(OrderListRenderer.java:149)
    at org.primefaces.component.orderlist.OrderListRenderer.encodeList(OrderListRenderer.java:108)
    at org.primefaces.component.orderlist.OrderListRenderer.encodeMarkup(OrderListRenderer.java:79)
    at org.primefaces.component.orderlist.OrderListRenderer.encodeEnd(OrderListRenderer.java:49)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:519)
    at org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChild(RendererUtils.java:543)
    at org.apache.myfaces.shared_impl.renderkit.html.HtmlGridRendererBase.renderChildren(HtmlGridRendererBase.java:315)
    at org.apache.myfaces.shared_impl.renderkit.html.HtmlGridRendererBase.encodeEnd(HtmlGridRendererBase.java:150)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:519)
    at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:60)
    at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:44)
    at org.primefaces.component.dialog.DialogRenderer.encodeContent(DialogRenderer.java:174)
    at org.primefaces.component.dialog.DialogRenderer.encodeMarkup(DialogRenderer.java:103)
    at org.primefaces.component.dialog.DialogRenderer.encodeEnd(DialogRenderer.java:41)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:519)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:626)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622)
    at org.primefaces.component.accordionpanel.AccordionPanelRenderer.encodeEnd(AccordionPanelRenderer.java:60)

@FacesConverter("contactConverter") public class ContactConverter implements Converter{

@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2)
        throws ConverterException {
    // TODO Auto-generated method stub
    TestBean tb= new TestBean();
    tb.setName(arg2);
    return tb;
}

@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2)
        throws ConverterException {
    // TODO Auto-generated method stub
    return arg2.toString();
}

I was working with primefaces orderlist example. But I am facing this null pointer exception. After googling i found that this issue is some thing related to conveter, but I am not sure.can anyone help me with the simple primeface orderlist with the converter.

1
It'd be helpful if you mention the exact PrimeFaces version, so that we (or you ...) can just look in the source code for the exact cause. - BalusC
@BalusC: I have read your many blogs related to Jsf2 and I found very useful and I was able to resolve many issues. Primefaces 3.4 is what I am using and I am trying out simple orderlist example. - shreekanth
<p:orderList styleClass="resultBox" style="color: #263F6A;" var="user" value="#{testBean.contacts}" itemValue="#{user}" controlsLocation="none" converter="contactConverter"> </p:orderList> - shreekanth

1 Answers

2
votes
java.lang.NullPointerException
    at org.primefaces.component.orderlist.OrderListRenderer.encodeOptions(OrderListRenderer.java:149)
    at org.primefaces.component.orderlist.OrderListRenderer.encodeList(OrderListRenderer.java:108)

From the PrimeFaces 3.4 OrderListRenderer source code:

90     protected void encodeList(FacesContext context, OrderList ol) throws IOException {
...
108        encodeOptions(context, ol, (List) ol.getValue());
...
115    }
...
143    @SuppressWarnings("unchecked")
144    protected void encodeOptions(FacesContext context, OrderList old, List model) throws IOException {
145        ResponseWriter writer = context.getResponseWriter();
146        String var = old.getVar();
147        Converter converter = old.getConverter();
148
149        for(Iterator it = model.iterator(); it.hasNext();) {

Thus, the model is null and thus this exception will occur when <p:orderList value> is null and thus your #{testBean.contacts} has returned null. Make sure that it's not null. Note that this can also happen when #{testBean} cannot be found in the scope.