struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Célio Cidral Junior" <ccidral.news...@gmail.com>
Subject [S2] Validation error messages are not being cleared
Date Sun, 25 Mar 2007 21:47:25 GMT
An action has this validation config:

<validators>
	<field name="nome">
		<field-validator type="requiredstring">
			<message>Campo obrigatório</message>
		</field-validator>
	</field>
	<field name="identificacao">
		<field-validator type="requiredstring">
			<message>Campo obrigatório</message>
		</field-validator>
		<field-validator type="regex">
			<param name="expression">[a-z]+</param>
			<message>
				Digite apenas letras minúsculas. Não são permitidos espaços,
números, nem caracteres acentuados.
			</message>
		</field-validator>
	</field>
</validators>

The validation works fine, except that the field error messages are
not getting cleared when the user fills the fields correctly in the
second submit.

The procedure is:

1. Submit the form with all fields empty;

(Struts shows the validation error messages correctly.)

2. Fill all fields with good values and submit again.

(Struts duplicates the messages right above the previous ones.)

And as you submit the form over and over again, Struts keeps
invalidating the fields, duplicating the error messages. I'm using
Struts 2.0.6.

-----8-<----- struts.xml (excerpt for that action) -----8-<-----

		<action name="usuario" class="usuario-form-action"> <!-- the action
object comes from Spring -->
			<result name="input">/jsp/private/usuario-form.jsp</result>
			<result name="success" type="redirect-action">listaDeUsuarios</result>
		</action>

-----8-<----- the action -----8-<-----

public class UsuarioFormAction extends PrevaylerAction {
	private static final long serialVersionUID = 1L;
	
	private int id = 0;
	private String nome;
	private Perfil perfil;
	private String identificacao;
	private String senha;
	private String confirmacaoDeSenha;
	
	public Set<Perfil> getPerfis() {
		return contexto().getPerfis();
	}
	
	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}
	
	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public int getPerfil() {
		return perfil.getId();
	}
	
	public void setPerfil(int id) throws Exception {
		PesquisaDePerfilPorIdQuery pesquisa = new PesquisaDePerfilPorIdQuery();
		
		pesquisa.setId(id);
		
		perfil = (Perfil) prevayler().execute(pesquisa);
	}
	
	public String getIdentificacao() {
		return identificacao;
	}

	public void setIdentificacao(String identificacao) {
		this.identificacao = identificacao;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public void setConfirmacaoDeSenha(String confirmacaoDeSenha) {
		this.confirmacaoDeSenha = confirmacaoDeSenha;
	}

	public String input() throws Exception {
		if (id != 0) {
			PesquisaDeUsuarioPorIdQuery pesquisa = new PesquisaDeUsuarioPorIdQuery();
			
			pesquisa.setId(id);
			
			Usuario usuario = (Usuario) prevayler().execute(pesquisa);
			
			if (usuario == null)
				return ERROR;
			
			nome = usuario.getNome();
			perfil = usuario.getPerfil();
			identificacao = usuario.getIdentificacao();
		}
		
		return INPUT;
	}
	
	public String salvar() throws Exception {
		if (senha.compareTo(confirmacaoDeSenha) == 0) {
			if (id == 0) {
				if (senha.length() > 0)
					criar();
				else {
					addActionMessage("Digite uma senha para o novo usuário.");
					return INPUT;
				}
			} else
				modificar();
		} else {
			addActionMessage("As senhas não conferem. Digite-as novamente.");
			return INPUT;
		}
		
		return SUCCESS;
	}

	private void modificar() {
		ModificacaoDeUsuarioTransaction modificacao = new
ModificacaoDeUsuarioTransaction();
		
		modificacao.setId(id);
		modificacao.setNome(nome);
		modificacao.setPerfil(perfil);
		modificacao.setIdentificacao(identificacao);
		
		if (senha.length() > 0)
			modificacao.setSenha(senha);
		
		prevayler().execute(modificacao);
	}

	private void criar() throws Exception {
		CriacaoDeUsuarioTransaction criacao = new CriacaoDeUsuarioTransaction();
		
		criacao.setNome(nome);
		criacao.setPerfil(perfil);
		criacao.setIdentificacao(identificacao);
		criacao.setSenha(senha);
		
		prevayler().execute(criacao);
	}
}

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Mime
View raw message