Pessoal, boa noite.
Deve ser algo bastante besta e fácil pra maioria, mas nunca usei JSF e tou apanhando bastante.
Fiz um search nos tópicos de Java pra Web e não encontrei nada.
Estou fazendo uma página em JSF bem boqueta, fazendo uso do selectmany.
Vou colocar o código do meu backing bean (anotado como "Controller") e do próprio jsp.
<h:column>
<h:outputText value="Vendedores:"/>
<h:selectManyMenu
id="vendedores"
value="#{viewSeparacaoSinteticoRelatorioController.vendedorChoices}">
<f:selectItems
value="#{viewSeparacaoSinteticoRelatorioController.vendedorSelects}"/>
</h:selectManyMenu>
</h:column>
Agora o código da classe
package controller;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.faces.model.SelectItem;
import org.springframework.stereotype.Controller;
import org.springframework.context.annotation.Scope;
import service.ViewSeparacaoSinteticoRelatorioService;
@Controller("viewSeparacaoSinteticoRelatorioController")
@Scope("session")
public class ViewSeparacaoSinteticoRelatorioController {
@Resource
private ViewSeparacaoSinteticoRelatorioService vssrs;
public ViewSeparacaoSinteticoRelatorioService getVssrs() {
return vssrs;
}
public void setVssrs(ViewSeparacaoSinteticoRelatorioService vssrs) {
this.vssrs = vssrs;
}
private List vendedorChoices = new ArrayList();
public List getVendedorChoices() {
return vendedorChoices;
}
public void setVendedorChoices(List vendedorChoices) {
this.vendedorChoices = vendedorChoices;
}
private SelectItem[] vendedorSelects;
public SelectItem[] getVendedorSelects() {
return vendedorSelects;
}
public void setVendedorSelects(SelectItem[] vendedorSelects) {
this.vendedorSelects = vendedorSelects;
}
public ViewSeparacaoSinteticoRelatorioController() {
this.fillSelectItemsVendedor();
}
private String formatoChoice;
private Object formatoValue;
public String getFormatoChoice() {
return formatoChoice;
}
public void setFormatoChoice(String formatoChoice) {
this.formatoChoice = formatoChoice;
}
public Object getFormatoValue() {
return formatoValue;
}
public void setFormatoValue(String formatoValue) {
this.formatoValue = formatoValue;
}
private void fillSelectItemsVendedor() {
List lista;
if (vssrs != null) {
lista = vssrs.listarVendedores();
this.vendedorSelects = new SelectItem[lista.size()];
SelectItem si = new SelectItem();
int i = 0;
for (Object o : lista) {
si.setLabel(o.toString());
si.setValue(o);
vendedorSelects[i] = si;
i++;
}
}
}
public void gerarRelatorio() {
vssrs.gerarRelatorio(formatoValue.toString());
}
}
A exceção que obtenho:
java.lang.IllegalArgumentException: Expected a child component type of UISelectItem/UISelectItems for component type javax.faces.SelectMany(vendedores). Found null.
com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:357)
com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:675)
com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:793)
com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:335)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:111)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
Alguém pode dar uma mão por gentileza?
[]'s