Problemas com selecao multipla com <p:datatable> Primefaces [RESOLVIDO]

3 respostas
C

Boa noite pessoal, sou novo no grupo, estou com um problema ao utilizar o datatable do primefaces para selecionar varias linhas com checkbox,
como neste exemplo: [url]http://www.primefaces.org/showcase/ui/datatableRowSelectionRadioCheckbox.jsf[/url]

Abaixo segue o trecho de código do xhtml, onde tenho um datatable que mostra os objetos de roomBean.rooms e seta
os valores selecionados para rooBean.roomSelecteds, logo abaixo tenho um commandButton para testar os valores selecionados no dataTable.

<h:form id="formulario">
	<p:dataTable id="rooms" value="#{roomBean.rooms}" var="room" selection="#{roomBean.roomSelecteds}">
		<p:column selectionMode="multiple" />
		<p:column headerText="Consultorios">
			<h:outputText value="#{room.description}" />
		</p:column>
	</p:dataTable>

	<p:commandButton action="#{roomBean.teste}" value="Enviar" />
</h:form>

Abaixo segue o trecho do Bean.

@Named
@ViewScoped
public class RoomBean implements Serializable {
    private List<Room> rooms;
    private List<Room> roomSelecteds;
		.
		. getters e setters
		.
	
	public void teste() {
		for (Room room : roomSelecteds) { 
			System.out.println(room.getDescription()); 
		}
		
	}
}
Após selecionar as linhas do datatable e clicar no botao, gera esse erro, provavelmente na fase 2 do JSF, APPLY_REQUEST_VALUES. j
avax.faces.FacesException
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:86)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:103)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)
	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:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
	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)
Caused by: java.lang.NullPointerException
	at java.lang.reflect.Array.newArray(Native Method)
	at java.lang.reflect.Array.newInstance(Unknown Source)
	at org.primefaces.component.datatable.DataHelper.decodeMultipleSelection(DataHelper.java:281)
	at org.primefaces.component.datatable.DataHelper.decodeSelection(DataHelper.java:210)
	at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:47)
	at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:786)
	at javax.faces.component.UIData.processDecodes(UIData.java:947)
	at org.primefaces.component.datatable.DataTable.processDecodes(DataTable.java:602)
	at javax.faces.component.UIForm.processDecodes(UIForm.java:213)
	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1038)
	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1038)
	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:941)
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
	... 19 more
24/01/2012 17:22:31 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/paineis] threw exception
java.lang.NullPointerException
	at java.io.Writer.write(Unknown Source)
	at com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:194)
	at com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:116)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:117)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)
	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:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
	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)

Alguem poderia me ajudar com esse problema? Alguem ja passou por isso antes?

Desde ja agradeço pela atenção!

3 Respostas

A

O atributo selection do datatable deve indicar um Array, ao invés de uma List.
Por ex : Room [] rooms;

C

Problema resolvido… obrigado pela atenção, e desculpa pela minha desatenção!

A

Grato em ajudar;
Marque seu tópico como [Resolvido] :slight_smile:

Criado 24 de janeiro de 2012
Ultima resposta 24 de jan. de 2012
Respostas 3
Participantes 2