Primefaces x Formulário

Olá gente, é o seguinte:

Peguei o código do PickList na página do Primefaces http://www.primefaces.org/showcase/ui/picklist.jsf e tentei adaptar à minha necessidade.
Só que ainda sou muito crú em java e primefaces.

Tenho o arquivo pickList.xhtml alterado:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.prime.com.tr/ui">
<h:form id="form">  
  
    <h3>Basic PickList</h3>  
  
    <p:pickList id="pickList" value="#{pickListBean.cities}"  
                var="city"  
                itemLabel="#{city}"  
                itemValue="#{city}" />  
  
    <p:commandButton id="citySubmit" value="Submit" update="displayCities" oncomplete="cityDialog.show()"/>  
  
    <p:dialog modal="true" showEffect="fade" hideEffect="fade" widgetVar="cityDialog">  
        <h:panelGrid id="displayCities" columns="2">  
            <h:outputText value="Source: " style="font-weight:bold"/>  
             <ui:repeat value="#{pickListBean.cities.source}" var="item">  
                <h:outputText value="#{item}" style="margin-right:5px" />  
            </ui:repeat>  
  
            <h:outputText value="Target: " style="font-weight:bold"/>  
            <ui:repeat value="#{pickListBean.cities.target}" var="item">  
                <h:outputText value="#{item}" style="margin-right:5px" />  
            </ui:repeat>  
        </h:panelGrid>  
    </p:dialog>  
   
</h:form>
</html>

Tenho também o PickListBean alterado conforme o código:

[code]
package org.primefaces.examples.view;

import java.util.ArrayList;
import java.util.List;

import org.primefaces.model.DualListModel;

public class PickListBean {

private DualListModel<String> cities;  

public PickListBean() {  

    //Cities  
    List<String> citiesSource = new ArrayList<String>();  
    List<String> citiesTarget = new ArrayList<String>();  

    citiesSource.add("Istanbul");  
    citiesSource.add("Ankara");  
    citiesSource.add("Izmir");  
    citiesSource.add("Antalya");  
    citiesSource.add("Bursa");  

    cities = new DualListModel<String>(citiesSource, citiesTarget);  
}  

public DualListModel<String> getCities() {  
    return cities;  
}  
public void setCities(DualListModel<String> cities) {  
    this.cities = cities;  
}  

}[/code]

Só que está dando a seguinte mensagem de erro:

GRAVE: Error Rendering View[/pickList.xhtml]
java.lang.NullPointerException
at org.primefaces.component.picklist.PickListRenderer.encodeMarkup(PickListRenderer.java:90)
at org.primefaces.component.picklist.PickListRenderer.encodeEnd(PickListRenderer.java:51)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source).

O que eu faço?

Apesar de no exemplo no site do PrimeFaces não estar assim, acredito que você precisa instanciar o objeto no começo:

private DualListModel<String> cities = new DualListModel<String>;Resolve?

Não funciona. Dá erro. :cry:

//não pode instanciar aqui
private DualListModel<String> cities;  
  
    public PickListBean() {  
  
        //Cities  
        List<String> citiesSource = new ArrayList<String>();  
        List<String> citiesTarget = new ArrayList<String>();  
  
        citiesSource.add("Istanbul");  
        citiesSource.add("Ankara");  
        citiesSource.add("Izmir");  
        citiesSource.add("Antalya");  
        citiesSource.add("Bursa");  

       //Porque vai ser instanciada aqui
        cities = new DualListModel<String>(citiesSource, citiesTarget);  
    }

opa amigo
já resolveu teu problema?
é que já passei por isso e é bem fácil de resolver

Ainda não resolvi, se puder me ajudar caro jaissonduarte, eu agradeço :!:

me parece que faltou declarar que PickListBean, é um ManagedBean