JSF - Problemas para criar SelectOne e Many Dinamicamente

3 respostas
R

Estou com o seguinte problema:
Tenho que criar, dependendo do caso ou um SelectMany ou um SelectOne, ou seja uma lista onde o usuário possa escolher entre as opções apresentadas, o problema é que não está renderizando os componentes.

se alguêm souber como faço isso pf poste :?.

OBS: painel = UIPanel e é inserido em outro UIPanel

USO a implementação da SUN e o RichFaces como bibliotecas.

este é o código:
HtmlSelectOneRadio rdOpcoes = (HtmlSelectOneRadio)apl.
   createComponent(HtmlSelectOneRadio.COMPONENT_TYPE);

   String strOpcao = null;
	   int tamLista = listaOpcoes.size();
	
	   for(int i = 0; i < tamLista; i++){
		
		      strOpcao = listaOpcoes.get(i);
		
		      UISelectItem item = (UISelectItem) apl.createComponent(
			UISelectItem.COMPONENT_TYPE);
		
		      item.setValue(String.valueOf(i));
		      item.setItemLabel(strOpcao);
		
		      rdOpcoes.getChildren().add(item);
	   }
	
	painel.getChildren().add(rdOpcoes);

e esta é a exceção gerada:

SEVERE: Exception in the filter chain

javax.servlet.ServletException: Argument Error: An option for component  was not an instance of javax.faces.model.SelectItem.  Type found: java.lang.String.

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)

at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)

at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)

at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

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:191)

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:286)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.IllegalArgumentException: Argument Error: An option for component  was not an instance of javax.faces.model.SelectItem.  Type found: java.lang.String.

at com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:289)

at com.sun.faces.renderkit.html_basic.SelectManyCheckboxListRenderer.encodeEnd(SelectManyCheckboxListRenderer.java:114)

at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)

at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:242)

at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:106)

at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)

at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:234)

at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:106)

at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)

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:837)

at javax.faces.component.UIComponent.encodeAll(UIComponent.java:936)

at javax.faces.component.UIComponent.encodeAll(UIComponent.java:942)

at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:271)

at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:202)

at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)

at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:189)

at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)

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)

 18 more

09/10/2008 09:15:33 org.apache.catalina.core.StandardWrapperValve invoke

SEVERE: Servlet.service() for servlet Faces Servlet threw exception

java.lang.IllegalArgumentException: Argument Error: An option for component  was not an instance of javax.faces.model.SelectItem.  Type found: java.lang.String.

at com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:289)

at com.sun.faces.renderkit.html_basic.SelectManyCheckboxListRenderer.encodeEnd(SelectManyCheckboxListRenderer.java:114)

at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)

at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:242)

at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:106)

at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)

at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:234)

at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:106)

at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)

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:837)

at javax.faces.component.UIComponent.encodeAll(UIComponent.java:936)

at javax.faces.component.UIComponent.encodeAll(UIComponent.java:942)

at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:271)

at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:202)

at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)

at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:189)

at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)

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 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)

at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)

at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)

at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

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:191)

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:286)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

at java.lang.Thread.run(Unknown Source)

3 Respostas

felipeguerra

Nossa, ta muito difícil de se entender o seu código dessa maneira, utilize a tag code, fica melhor!

R

Se alguem souber de algum tutorial, material ou página que fale sobre criação dinamica de componentes, principalmente com o mínimo possível de acoplamento ao BackBean. Também estou tendo problemas para criar uma tabela dinamicamente, preciso inserir os itens um a um, sem referências ao BackBean.

Código formatado (desculpem pelo anterior):
ArrayList<String> listaOpcoes = (ArrayList<String>)req.getParametro(1);
		
		HtmlSelectOneRadio rdOpcoes = (HtmlSelectOneRadio)apl.
			createComponent(HtmlSelectOneRadio.COMPONENT_TYPE);
		
		String strOpcao = null;
		int tamLista = listaOpcoes.size();
		
		for(int i = 0; i < tamLista; i++){
			
			strOpcao = listaOpcoes.get(i);
			
			UISelectItem item = (UISelectItem) apl.createComponent(
				UISelectItem.COMPONENT_TYPE);
			
			item.setValue(String.valueOf(i));
			item.setItemLabel(strOpcao);
			
			rdOpcoes.getChildren().add(item);
		}
		
		painel.getChildren().add(rdOpcoes);

Exceção:

M

Desenterrando tópico antigo :smiley:

É que tive problema semelhante e resolvi com a ajuda deste tópico.

Fica com Deus.

Criado 9 de outubro de 2008
Ultima resposta 15 de ago. de 2011
Respostas 3
Participantes 3