Aceder aos valores seleccionados num pickList

1 resposta
R

Boa tarde a todos,

Estou a tentar usar uma rich:pickList com duas variaveis: Uma para os valores possiveis (opções) e outra para conter os valores seleccionados (Strings). Consigo criar e preencher a pickList com os valores das opções desta maneira:

<rich:pickList copyAllControlLabel="Add all" copyControlLabel="Add">
         <f:selectItems value="#{SessionBean.tempDistincts}"/>
</rich:pickList>

tempDistincts é:

private ArrayList<SelectItem> tempDistincts = new ArrayList<SelectItem>();

É preenchida deste modo:

Vector<String> values = extractor.getDistinctValues();
for (int i = 0; i < values.size(); i++) {
     tempDistincts.add(new SelectItem(values.elementAt(i)));
}

Esta pickList mostra os valores correctamente, no entanto se tentar adicionar uma estrutura para conter os valores seleccionados, tenho um erro.

O XML é:

<rich:pickList value="#{SessionBean.tempSelectedValues}" copyAllControlLabel="Add all" copyControlLabel="Add">
        <f:selectItems value="#{SessionBean.tempDistincts}"/>
</rich:pickList>

tempSelectedValues é:

private ArrayList<String> tempSelectedValues = new ArrayList<String>();

Quando corro tenho o seguinte erro:

java.lang.NullPointerException
	at org.ajax4jsf.util.ELUtils.getGenericCollectionType(ELUtils.java:144)
	at org.ajax4jsf.util.ELUtils.getContainerClass(ELUtils.java:174)
	at org.richfaces.component.UIPickList.getConverterForValue(UIPickList.java:93)
	at org.richfaces.component.UIPickList.getConverter(UIPickList.java:72)
	at org.richfaces.renderkit.PickListRenderer.encodeRows(PickListRenderer.java:245)
	at org.richfaces.renderkit.PickListRenderer.encodeSourceRows(PickListRenderer.java:359)
	at org.richfaces.renderkit.html.PickListRendererGen.doEncodeChildren(PickListRendererGen.java:371)
	at org.richfaces.renderkit.html.PickListRendererGen.doEncodeChildren(PickListRendererGen.java:279)
	at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:826)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.richfaces.renderkit.html.ModalPanelRenderer.doEncodeChildren(ModalPanelRenderer.java:387)
	at org.richfaces.renderkit.html.ModalPanelRenderer.doEncodeChildren(ModalPanelRenderer.java:382)
	at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:826)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:936)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:826)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:220)
	at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:215)
	at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:826)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:936)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:942)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:942)
	at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:273)
	at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:204)
	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
	at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:22
7)
	at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
	at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
	at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
	at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
	at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.
java:3496)
	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
	at weblogic.security.service.SecurityManager.runAs(Unknown Source)
	at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
	at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
	at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

Pensei que talvez tivesse de usar o tipo SelectItem na variável que contem os valores seleccionados, mas o erro continua.

Alguma ideia por favor?

Agradeço desde já,
~Ruben

1 Resposta

R

Encontrei o problema: Um dos métodos de acesso à variável tinha o nome errado. Agora está a funcionar correctamente.

Criado 25 de junho de 2009
Ultima resposta 26 de jun. de 2009
Respostas 1
Participantes 1