[RESOLVIDO] Primefaces DataTable Row Editing não carrega

Boa tarde pessoal.

Estou tentando implementar o DataTable Row Editing do showcase do primefaces, porém quando vou executar aparece o seguinte erro:

19/12/2013 16:55:33 com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
GRAVE: Error Rendering View[/index.xhtml]
java.lang.NullPointerException
	at org.primefaces.component.celleditor.CellEditorRenderer.encodeEnd(CellEditorRenderer.java:38)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
	at org.primefaces.component.datatable.DataTableRenderer.encodeCell(DataTableRenderer.java:823)
	at org.primefaces.component.datatable.DataTableRenderer.encodeRow(DataTableRenderer.java:784)
	at org.primefaces.component.datatable.DataTableRenderer.encodeRows(DataTableRenderer.java:699)
	at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:654)
	at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:249)
	at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:211)
	at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:83)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:74)
	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:57)
	at org.primefaces.component.outputpanel.OutputPanelRenderer.encodeMarkup(OutputPanelRenderer.java:64)
	at org.primefaces.component.outputpanel.OutputPanelRenderer.encodeEnd(OutputPanelRenderer.java:40)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
	at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:559)
	at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1729)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1740)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1740)
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1740)
	at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:399)
	at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:319)
	at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:57)
	at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:1004)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1896)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:425)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
19/12/2013 16:55:33 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/java-web] threw exception
java.lang.IllegalStateException: CDATA tags may not nest
	at com.sun.faces.renderkit.html_basic.HtmlResponseWriter.startCDATA(HtmlResponseWriter.java:681)
	at javax.faces.context.ResponseWriterWrapper.startCDATA(ResponseWriterWrapper.java:179)
	at javax.faces.context.PartialResponseWriter.startError(PartialResponseWriter.java:341)
	at org.primefaces.context.PrimePartialResponseWriter.startError(PrimePartialResponseWriter.java:156)
	at com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:202)
	at com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:126)
	at javax.faces.context.ExceptionHandlerWrapper.handle(ExceptionHandlerWrapper.java:100)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Meu xhtml está assim(igual do showcase):

[code]<?xml version="1.0" encoding="ISO-8859-1" ?>

<h:head>
Insert title here
</h:head>
<h:body>


Projetos Concluídos

<h:form id=“form”>

<p:growl id="messages" showDetail="true"/>

<p:dataTable var="car" value="#{tableBean.carsSmall}" id="carList" editable="true">

    <f:facet name="header">
        In-Cell Editing
    </f:facet>

    <p:ajax event="rowEdit" listener="#{tableBean.onEdit}" update=":messages" />
    <p:ajax event="rowEditCancel" listener="#{tableBean.onCancel}" update=":messages" />

    <p:column headerText="Model" style="width:30%">
        <p:cellEditor>
            <f:facet name="output">
                <h:outputText value="#{car.model}" />
            </f:facet>
            <f:facet name="input">
                <p:inputText value="#{car.model}" style="width:100%"/>
            </f:facet>
        </p:cellEditor>
    </p:column>

    <p:column headerText="Year" style="width:20%">
        <p:cellEditor>
            <f:facet name="output">
                <h:outputText value="#{car.year}" />
            </f:facet>
            <f:facet name="input">
                <p:inputText value="#{car.year}" style="width:100%" label="Year"/>
            </f:facet>
        </p:cellEditor>
    </p:column>

    <p:column headerText="Manufacturer" style="width:24%">
        <p:cellEditor>
            <f:facet name="output">
                <h:outputText value="#{car.manufacturer}" />
            </f:facet>
            <f:facet name="input">
                <h:selectOneMenu value="#{car.manufacturer}" >
                    <f:selectItems value="#{tableBean.manufacturers}"
                        var="man" 
                        itemLabel="#{man}"
                        itemValue="#{man}" />
                </h:selectOneMenu>
            </f:facet>
        </p:cellEditor>
    </p:column>

    <p:column headerText="Color" style="width:20%">
        <p:cellEditor>
            <f:facet name="output">
                <h:outputText value="#{car.color}" />
            </f:facet>
            <f:facet name="input">
                <h:selectOneMenu value="#{car.color}" >
                    <f:selectItems value="#{tableBean.colors}"
                        var="color" 
                        itemLabel="#{color}"
                        itemValue="#{color}" />
                </h:selectOneMenu>
            </f:facet>
        </p:cellEditor>
    </p:column>

    <p:column style="width:6%">
        <p:rowEditor />
    </p:column>

</p:dataTable>

</h:form>

</div>

</h:body>

[/code]

Meu MB está assim(igual do showcase):

@ManagedBean(name="tableBean")
@SessionScoped
public class TableBean implements Serializable {

	private final static String[] colors;

	private final static String[] manufacturers;

    private List<Car> carsSmall;

	static {
		colors = new String[10];
		colors[0] = "Black";
		colors[1] = "White";
		colors[2] = "Green";
		colors[3] = "Red";
		colors[4] = "Blue";
		colors[5] = "Orange";
		colors[6] = "Silver";
		colors[7] = "Yellow";
		colors[8] = "Brown";
		colors[9] = "Maroon";

		manufacturers = new String[10];
		manufacturers[0] = "Mercedes";
		manufacturers[1] = "BMW";
		manufacturers[2] = "Volvo";
		manufacturers[3] = "Audi";
		manufacturers[4] = "Renault";
		manufacturers[5] = "Opel";
		manufacturers[6] = "Volkswagen";
		manufacturers[7] = "Chrysler";
		manufacturers[8] = "Ferrari";
		manufacturers[9] = "Ford";
	}

	public TableBean() {
		carsSmall = new ArrayList<Car>();

		populateRandomCars(carsSmall, 9);
	}

	private void populateRandomCars(List<Car> list, int size) {
		for(int i = 0 ; i < size ; i++)
			list.add(new Car(getRandomModel(), getRandomYear(), getRandomManufacturer(), getRandomColor()));
	}

	public List<Car> getCarsSmall() {
		return carsSmall;
	}

	private int getRandomYear() {
		return (int) (Math.random() * 50 + 1960);
	}

	private String getRandomColor() {
		return colors[(int) (Math.random() * 10)];
	}

	private String getRandomManufacturer() {
		return manufacturers[(int) (Math.random() * 10)];
	}

	private String getRandomModel() {
		return UUID.randomUUID().toString().substring(0, 8);
	}

    public String[] getManufacturers() {
        return manufacturers;
    }

    public String[] getColors() {
        return colors;
    }

    public void onEdit(RowEditEvent event) {
        FacesMessage msg = new FacesMessage("Car Edited", ((Car) event.getObject()).getModel());

        FacesContext.getCurrentInstance().addMessage(null, msg);
    }
    
    public void onCancel(RowEditEvent event) {
        FacesMessage msg = new FacesMessage("Car Cancelled", ((Car) event.getObject()).getModel());

        FacesContext.getCurrentInstance().addMessage(null, msg);
    }
}

Vi que caso eu retire o bloco <p:cellEditor> e deixe apenas a chamada do get #{car.model} ele abre a página (mais não edita claro).

Estou utilizando o JSF: javax.faces-2.2.1.jar
E primefaces: primefaces-4.0.jar

Obrigado.

Tentei agora com o Mojarra 2.2.4 (javax.faces-2.2.4.jar) mas não deu também.

Assim dá erro:

        <p:column headerText="Model" style="width:30%">  
            <p:cellEditor>  
                <f:facet name="output">  
                    <h:outputText value="#{car.model}" />  
                </f:facet>  
                <f:facet name="input">  
                    <p:inputText value="#{car.model}" style="width:100%"/>  
                </f:facet>  
            </p:cellEditor>  
        </p:column>  

Assim não da erro:

        <p:column headerText="Model" style="width:30%">  
                #{car.model}"
        </p:column>  

Alguém sabe me ajudar?

Apenas para registrar caso alguém passe pelo mesmo problema.

Não encontrei a solução em nenhum lugar. E de tanto tentar, consegui resolver.

O problema foi que estou utilizando templates, e apenas meu xhtml que continha o dataTable que estava declarada as bibliotecas do primefaces. Então declarei em todos os xhtml as bibliotecas e funcionou ok

<html xmlns="http://www.w3.org/1999/xhtml"
		xmlns:ui="http://java.sun.com/jsf/facelets"
		xmlns:f="http://java.sun.com/jsf/core"
		xmlns:h="http://java.sun.com/jsf/html"
		xmlns:p="http://primefaces.org/ui">

Abraço.