JSF - ValueBind com HashMap<String, ArrayList>

2 respostas
Ferryman

Bom dia a todos,

Pessoal, estou com um problema que não sei como resolver…

Eu tenho diversos HTMLSelectManyCheckbox na minha pagina, e preciso fazer valueBind de todos eles com o mesmo objeto no meu backingbean.
Bom, como o htmlSelectManyCheckbox precisa de uma lista para ser bindado, eu pensei em utilizar um mapa de listas… porem não deu certo… alguem conhece uma alternativa para esse caso?!

meu backingbean

private HashMap<String, ArrayList> respostaMatrizCheck = new HashMap<String, ArrayList>();

	public HashMap<String, ArrayList> getRespostaMatrizCheck() {
		return respostaMatrizCheck;
	}

	public void setRespostaMatrizCheck(HashMap<String, ArrayList> respostaMatrizCheck) {
		this.respostaMatrizCheck = respostaMatrizCheck;

e o meu value bind é:

"#{pesquisaBackingBean.respostaMatrizCheck['"+ questaoMatriz.getCodigo() + "_" + linha.getCodigo()  +"']}";

Minha pergunta: Com esse value Bind, cada HTMLSelectManyCheckbox não está ligado direto com um ArrayList?!

A mensagem de erro que eu tenho é que o bind precisa ser com um tipo List.

Aguardo ajuda,
Valeu,

Ferry

2 Respostas

I

Olá Ferry,

Tenho um exemplo que pega várias listas em uma Map e joga tudo em uma lista única para ser utilizada no componente. Não sei se exatamente o que procura, mas em todo caso tá ai o exemplo. Veja se vc pode colocar uma outra chave na List para que cada elemento tenha um ID único.

Sds
Iran

public class Teste {

    @SuppressWarnings("unchecked")
    public List<SelectItem> getListaGeral() {

        Map mapListas = new FuncionarioAux().getMapList();

        List<SelectItem> listaGeral = new ArrayList<SelectItem>();

        Iterator<Entry<String, ArrayList<String>>> itMapListas = mapListas.entrySet().iterator();

        while (itMapListas.hasNext()) {
            Entry<String, ArrayList<String>> entry1 = itMapListas.next();

            ArrayList<String> arrayList = (ArrayList<String>) mapListas.get(entry1.getKey());

            for (String item : arrayList) {
                listaGeral.add(new SelectItem(entry1.getKey(), item));
            }
        }

        return listaGeral;
    }
}

class FuncionarioAux {
   /**
    * 
    */
    protected static final ArrayList<String> LIST_SEXO;

    protected static final ArrayList<String> LIST_ESTADO_CIVIL;

    static {

        LIST_SEXO = new ArrayList<String>(3);

        LIST_SEXO.add("FEMININO");
        LIST_SEXO.add("MASCULINO");
        LIST_SEXO.add("DESCONHECIDO");

        LIST_ESTADO_CIVIL = new ArrayList<String>(3);

        LIST_ESTADO_CIVIL.add("SOLTEIRO");
        LIST_ESTADO_CIVIL.add("CASADO");
        LIST_ESTADO_CIVIL.add("DIVORCIADO");

    }

    private HashMap<String, ArrayList> mapList = new HashMap<String, ArrayList>();

    public HashMap<String, ArrayList> getMapList() {
        mapList.put("Lista01", LIST_SEXO);
        mapList.put("Lista02", LIST_ESTADO_CIVIL);
        return mapList;
    }

}
Ferryman

Valeu pela resposta.

bom não é bem isso que estou precisando agora…

Eu preciso é que o jsf consiga entender os componentes htmlSelectManyCheckbox estão bindados com uma POSIÇÃO do mapa, onde contem uma LISTA, e não que o componente esta bindado a um mapa…

Falou
[]

Criado 25 de janeiro de 2007
Ultima resposta 25 de jan. de 2007
Respostas 2
Participantes 2