Criar ArrayList com dados do inputTex

Olá Pessoal.

Estou quebrando a cabeça em uma coisa que talvez seja simples, porem ainda não cheguei em uma solução. Tenho uma tabela que lista questões de uma avaliação e nela tenho inputText onde é digitada a nota para cada uma das questões, meu problema esta em armazenar essas notas em uma lista para conseguir salvar posteriormente, pois é usado o mesmo value para todos os inputText. Já tentei usar ajax para criar a lista porem sem sucesso. Alguem poderia auxiliar?.

Desde já agradeço.

Renan.

Mostre seu codigo.

Olá Rof, primeiramente obrigado pelo contato. Segue o código:


//Trecho da tabela onde esta o inputText

<p:inputMask mask="9" style="font-size:4px;width:40;height:20"
											value="#{preenchimentoBacking.notaSelecionada}" maxlength="1">
											<p:ajax listener="#{preenchimentoBacking.capturaNota}"
												event="blur" process="@this" />
										</p:inputMask>

        private List<QuestaoAvaliacao> listaQuestaoAlunos;
	private List<Matric_disciplina> listaDisciplinas;
	private List<Alternativas> listaQuestao;
	private List<Double> listaNotaAtribuida = new ArrayList<Double>();
	private Double notaSelecionada;

//método onde estou tentado adicionar o valor do input na lista

public void capturaNota() {

		listaNotaAtribuida.add(notaSelecionada);
	}

//método que salva.

	public void finalizaAvaliacao() {

		try {

			if (digAlun != null) {

				for (int i = 0; i < listaQuestaoAlunos.size(); i++) {
					for (int y = 0; y < listaDisciplinas.size(); y++) {
						for (int j = 0; j < listaNotaAtribuida.size(); j++) {

                                                         digAlun.setNota(listaNotaAtribuida.get(j));
							digAlun.setAvl(av);
							digAlun.setQuestao(listaQuestaoAlunos.get(i)
									.getQuestao());
							digAlun.setTurma(listaDisciplinas.get(y).getTurma());
							digAlun.setUsuario(usuario);
							digAlun.setDataPreenchimento(new Date());

							abDAO.saveOrUpdate(digAlun);
							digAlun = null;
							reset();

						}
					}
				}

				JSFUtil.addInfoMessage("Avaliação finalizada com sucesso!. Agradecemos sua participação!");

			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

Renan.

Uma pergunta, fazendo desse jeito, ele esta sempre salvando somente 1 nota ?

Ele não esta nem chamando o método do listener, isso que esta me intrigando mais ainda.

Ele so executa quando o inputTxt (que é inputMask) perde o foco, ja fez o debug ?

Ele nao executa em momento nenhum, ja tentei colocar inputText comum e tambem nao funcionou. O mais engraçado ainda é que não esta ocorrendo nenhum erro. Não cheguei fazer o Debug. Percebi que quando troco o process="@this" por @all ele executa o evento e da erro por estar tentando inserir algo null.

tira o proccess, pode retirar ele todo, e testa sem ele. Vou pegar um projeto meu aqui em JSF pra testar algo pra voce, so espera um pouco, maquina aqui é lenta.

ja tentei tirando o process tambem e nada.

blz espero valeu.

Obrigado.

Subindo JBoss 7 aqui ‘-’, hehehe, tenho que comprar outro notebook, esse ja deu!!!

hahaha eu tbm nao fico mto longe viu, to precisando comprar outro tbm.

Entao, testei aqui e entrou no metodo, porem, acho que isso que faltou voce criar, crie getters e setters para a lista e para a nota.

é isso mesmo mano, faz assim:

Cria somente o get para a lista

[code]
private List listaNotaAtribuida = new ArrayList();

public List getListaNotaAtribuida() {
return listaNotaAtribuida;
}[/code]

e para a nota voce cria get e set

private Double notaSelecionada;

public Double getNotaSelecionada() {
		return notaSelecionada;
}

public void setNotaSelecionada(Double notaSelecionada) {
	this.notaSelecionada= notaSelecionada;
}

Ja na pagina voce tira o proccess, nao é necessario.

cara valeu, mas o problema não é esse não, até fiz o que vc pediu. Vale lembrar que com apenas um inputText eu consigo fazer funcionar, mas no meu caso eu tenho vários input utilizando o mesmo value, pois todos estao em uma tabela.

Mais alguma sugestão?

Valeu.

Renan.

Não sei se isso pode te ajudar, mas vamos tentar.

http://www.guj.com.br/java/283453-resolvido-arraylist-e-jsf-como-fazer

Olá Amauri. Primeiramente obrigado pelo contato.

cara não consegui extrair sua idéia para o meu caso.

Valeu.

Renan.

[quote=AmauriSpPoa]Não sei se isso pode te ajudar, mas vamos tentar.

http://www.guj.com.br/java/283453-resolvido-arraylist-e-jsf-como-fazer[/quote]

Olá Amauri. Primeiramente obrigado pelo contato.

cara não consegui extrair sua idéia para o meu caso.

Valeu.

Renan.

[quote=renanlalier]cara valeu, mas o problema não é esse não, até fiz o que vc pediu. Vale lembrar que com apenas um inputText eu consigo fazer funcionar, mas no meu caso eu tenho vários input utilizando o mesmo value, pois todos estao em uma tabela.

Mais alguma sugestão?

Valeu.

Renan.[/quote]

Era pra funcionar, independente da quantidade de inputTexts que voce tem, a lista iria armazenar de um por um sem problemas. Estranho, ou realmente nao entendi o seu problema, ‘-’. Voce quer ir informando notas a cada inputText, e a cada mudança de foco ir armazenando numa lista, so que acho que talvez seja esse seu problema, ja que todos tem o mesmo value, logo, se voce sair do foco do input numero 10, essa lista vai pegar o valor de TODOS os inputs, ja que todos tem o mesmo value, acho que o correto seria voce informar um vetor entao, ou entao uma variavel diferente para cada input, porque se realmente todos tem o mesmo value, e voce esta submetendo via ajax a nota de 1, logo vce estara submetendo a nota de todos. Independente de qual ira perder o foco, visto que o bean pegara pelo nome do atributo.