Botão desfazer X BeanValidator

0 respostas
Lucas_Sorrentino

Olá amigos, tudo bem?

Bem, estou com um problema aqui que não sei como resolver… ja tentei de tudo, ja olhei documentação, ja pesquisei na net, e não sei exatamente onde estou errando.
Tenho um formulário em JSF que tem um botão desfazer. Esse botão chama uma action no meu Controller que simplesmente limpa os campos do formulário após um erro na atualização do form, trazendo de volta os campos originais do fromulário. Só que, depois que eu clico no botão, ele retorna os campos corretos, mas quando tento salvar de novo, o meu BeanValidator, diz que os valores da minha entidade estão nulos. O estranho é que, quando eu debugo, vej que os campos estão saindo do form preenchidos, mas em algum ponto obscuro, estão ficando nulos… alguém tem alguma idéia do que possa ser… abaixo vou postar os códigos referentes ao problema…

Método action do botão no Controller:

public String reset() {
		TempoDiarioBc tempoDiarioBc = new TempoDiarioBc();
		this.tempoDiario = tempoDiarioBc.obterReferencia(this.tempoDiario
				.getId());
		tempoDiarioBc.refresh(this.tempoDiario);
		UIComponentUtil.getUIComponent("TempoDiario:painelTempoDiario")
				.getChildren().clear();
		UIComponentUtil.getUIComponent("atividade:painelAtividade")
				.getChildren().clear();
		return null;
	}
}

Método validador:

public void validarAtributos(TempoDiario tempoDiario) throws ExcecaoBC {
		
		List<String> mensagens = new ArrayList<String>();
		ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
		Validator validator = factory.getValidator();
		Set<ConstraintViolation<TempoDiario>> constraintViolations = validator
				.validate(tempoDiario);
		
		for (ConstraintViolation<TempoDiario> constraintViolation : constraintViolations) {
			mensagens.add(constraintViolation.getPropertyPath() + ": "
					+ constraintViolation.getMessage());
		}
		if (mensagens.size() > 0) {
			throw new ExcecaoBC(mensagens);
		}
	}

Botão no página JSF:

<a4j:commandButton reRender="TempoDiario, atividade" value="Reset"
		action="#{tempoDiarioController.reset}" immediate="true" disabled="#{tempoDiarioController.tempoDiario.id == null}" >
</a4j:commandButton>

Alguém tem uma idéia?

Criado 23 de julho de 2010
Respostas 0
Participantes 1