[RESOLVIDO] Ajuda com Vetor, Array de um SelectItem e SelectItemGroup

Boa tarde,
Pessoal estou com problemas no meu código, não consigo pensar numa maneira de passar esse vetor de caracteres, percebi que meu código ao inves de adicionar ao array todos os valores ele da um new e so salva o último, ja tentei de todas as formas que imaginei mas o resultado é sempre o ultimo valor recebido no array… Alguma sugestao?

@ApplicationScoped
@Named(value="chamadoBean")
public class ChamadoBean implements Serializable {
	private static final long serialVersionUID = 1L;
	
	@Inject
	private CategoriaPU categoriaPU;
	
	private Categoria categoria;
	
	private List<SelectItem> todasCategorias;
	private List<Categoria> categoriaClasse;
	private String categoriaSelecionada;
	
	public void listaCategorias(){
        todasCategorias = new ArrayList<>();
        categoriaClasse = categoriaPU.listarCategorias(categoria);
        SelectItemGroup grupo = new SelectItemGroup("Grupo1");
        
        for(int i=0; i<categoriaClasse.size(); i++){
        	grupo.setSelectItems(new SelectItem[]{new SelectItem(categoriaClasse.get(i).getCategoriaId(), categoriaClasse.get(i).getCategoriaNome())});
        }
       
        todasCategorias.add(grupo);
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public List<SelectItem> getTodasCategorias() {
		return todasCategorias;
	}

O que quero fazer é esse codigo abaixo só que ao inves de pegar esses valores predefinidos pegar o que esta no Array categoriaClasse

for(int i=0; i<categoriaClasse.size(); i++){
	grupo.setSelectItems(new SelectItem[]{
			new SelectItem("1","valor1"),
			new SelectItem("2", "valor2")
	});
}

a sua inserção é depois do for só você colocar dentro do for, mas você tem que dar um new do grupo também

 for(int i=0; i<categoriaClasse.size(); i++){
        	grupo.setSelectItems(new SelectItem[]{new SelectItem(categoriaClasse.get(i).getCategoriaId(), categoriaClasse.get(i).getCategoriaNome())});
           grupo=new SelectItemGroup("Grupo1");
            todasCategorias.add(grupo);

}

Ele criou 3 grupos, ao inves de 1 grupo e 3 categorias quando coloquei o todasCategorias.add(grupo) dentro do for, quando coloquei o new grupo dentro do for ele criou 3 grupos so que cada um com uma categoria diferente dentro… ao inves de um grupo com as 3 categorias

n

O erro está no preenchimento do vetor na linha “grupo.setSelectItems(new SelectItem[]{new SelectItem(categoriaClasse.get(i).getCategoriaId(), categoriaClasse.get(i).getCategoriaNome())});” tenho certeza, mas nao sei outra maneira de preencher esse vetor do tipo SelectItem

eu num intendi muito bem o que vc quer mais achei esse link q talvez possa te ajudar:

https://stackoverflow.com/questions/31905878/understanding-selectitemgroup?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

Olá Blayd, o que quero fazer é exatamente isso, so que ao inves de ter as strings escritas manualmente pega-las na minha array categoriasClasse que já esta preenchida com as categorias que preciso…

haaa intendi o q vc quer, peraí

SelectItem[] todasCategorias = new SelectItem[categoriaClasse.size];
SelectItemGroup grupo = new SelectItemGroup("Grupo1");

for(int i = 0; i < categoriaClasse.size; i++){
todasCategorias[i] = new SelectItem(categoriaClasse.get(i).getCategoriaId(), categoriaClasse.get(i).getCategoriaNome());
}

grupo.setSelectItems(todasCategorias);

mais ou menos isso vc tem que testar pra ver se da certo

1 curtida

Obrigado Blayd!!! Fiz alguns ajustes e deu certo, vou postar o resultado:

@ApplicationScoped
@Named(value="chamadoBean")
public class ChamadoBean implements Serializable {
	private static final long serialVersionUID = 1L;
	
	@Inject
	private CategoriaPU categoriaPU;
	
	private Categoria categoria;
	
	private List<SelectItem> todasCategorias;
	private List<Categoria> categoriaClasse;
	private String categoriaSelecionada;
	
	public void listaCategorias(){
		todasCategorias = new ArrayList<>();
        categoriaClasse = categoriaPU.listarCategorias(categoria);
        SelectItem[] items = new SelectItem[categoriaClasse.size()];
        SelectItemGroup grupo = new SelectItemGroup("Grupo1");

        
        for(int i=0; i<categoriaClasse.size(); i++){
        	items[i] = new SelectItem(categoriaClasse.get(i).getCategoriaId(), categoriaClasse.get(i).getCategoriaNome());

        }
       
        grupo.setSelectItems(items);
        todasCategorias.add(grupo);
	}

Sem%20t%C3%ADtulo