2013-02-13 4 views
1
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") общественного класса ContactConverter реализует конвертер {Получение исключение NullPointer на OrderList в primefaces

@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(); 
} 

Я работал с primefaces OrderList пример. Но я столкнулся с этим исключением. После googling я обнаружил, что эта проблема связана с конвектором, но я не уверен. Кто-нибудь может мне помочь с простым списком прайм-листа с конвертером.

+0

Было бы полезно, если вы упомянете точную версию PrimeFaces, чтобы мы (или вы ...) могли просто посмотреть в исходном коде для точной причины. – BalusC

+0

@BalusC: Я прочитал ваши многочисленные блоги, связанные с Jsf2, и я нашел очень полезным, и я смог решить многие проблемы. Primefaces 3.4 - это то, что я использую, и я пробовал простой пример списка заказов. – shreekanth

+0

\t \t \t \t shreekanth

ответ

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

Из PrimeFaces 3,4 OrderListRenderer исходный код:

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();) { 

Таким образом, model является null и, таким образом, это исключение будет происходить, когда <p:orderList value> является null и, таким образом, ваш #{testBean.contacts} вернулся null. Убедитесь, что это не null. Обратите внимание, что это также может произойти, когда #{testBean} не может быть найден в области.

+0

Значение не равно нулю. Обязательно ли иметь конвертер? Я использовал конвертер. – shreekanth

+0

Вы посмотрели исходный код PrimeFaces? Исходя из исходного кода, 'OrderList # getValue()' вернул 'null'. Таким образом, ваш '# {testBean.contacts}' возвратил 'null'. Просто запустите отладчик, чтобы увидеть его самостоятельно. – BalusC

+0

Спасибо. Вы абсолютно правы! Я перекрестно проверил свой код. Значение было нулевым. Я исправил это, я вижу, как выглядит список заказов. – shreekanth

Смежные вопросы