Dúvida validação STRUTS 2

Pessoal boa tarde,

1 - Criei uma validação na Action(@RequiredStringValidator) p/ não permitir que um certo campo seja enviado p/ action vazio.
2 - usei uma tag lib p/ receber a mensagem de validação da action no arquivo JSP.

a validação funciona beleza, mas assim que eu entro no meu jsp ( sem fazer nenhuma requisição a ACTION ) , a mensagem de validação aparece no JSP… gostaria que a mensagem de validação só aparecesse quando fosse submetido o formulário sem o campo preenchido…

ps: também existe uma validação p/ tamanho mínimo de caracteres , a mesma funciona quando é submetido, e aparece a mensagem de restrição dos 5 caracteres… mas se eu pressionar f5 ou entrar novamente no formulário sem fazer nada aparece a mensagem
referente a validação da obrigatoriedade do campo.

taglib usada : <s:fielderror />

segue abaixo o código do JSP e ACITION:


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h3>Adicionar Tarefas</h3>	
	<s:fielderror fieldName="tarefa.descricao"/>
	<form action="adicionaTarefa" method="post">
		Descrição : <br />
		<textarea rows="5" cols="100" name="tarefa.descricao">
		
		</textarea>
		<input type="submit" value="adicionar" />
	</form>
</body>
</html>
package action;

import org.apache.struts2.convention.annotation.*;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import com.opensymphony.xwork2.validator.annotations.StringLengthFieldValidator;
import com.opensymphony.xwork2.validator.annotations.Validations;

import dao.TarefaDao;
import entidade.Tarefa;

@Validations(requiredStrings={
		     @RequiredStringValidator(fieldName="tarefa.descricao",message="Valor obrigatório" ) },
		     stringLengthFields={
		     @StringLengthFieldValidator(fieldName="tarefa.descricao",minLength="5",message="Minimo 5 caracteres") }
)
public class AdicionaTarefaAction extends ActionSupport {
	private Tarefa tarefa;

	@Action(value = "adicionaTarefa",results = { 
			@Result(name = "ok", location = "/tarefa-adicionada.jsp"), 
	        @Result(name = "input", location ="/formulario-tarefas.jsp")		
	} )
	public String execute(){
		new TarefaDao().adiciona(tarefa);
		
		return "ok";
	}
	
	public Tarefa getTarefa() {
		return tarefa;
	}

	public void setTarefa(Tarefa tarefa) {
		this.tarefa = tarefa;
	}
	
}

Experimenta validar se existe erro antes de exibir o erro com o método hasActionErrors(), conforme segue:

&lt;s:if test="hasActionErrors() || hasFieldErrors()"&gt;
	&lt;s:fielderror fieldName="tarefa.descricao"/&gt; 
&lt;/s:if&gt;

Por que vc não usa as tags do struts2??? No template freemarker ele já renderiza as mensagens de erros no local adequado…

Roberto,

muito obrigado por responder, fiz exatamente como você disse mas mesmo assim o “problema” continua… assim que entro na página já mostra a validação( sem submeter o formulário)…

Quais seriam essas tags que você mencionou ? estou estudando struts 2 pela apostila da CAELUM… desenvolvo a 3 anos mas estou engatinhando na parte de java web ainda…

obrigado

Primeiro, muito bem! As apostilas da Caelum são excelentes! Sempre as recomendo para quem está começando…

Bom, aqui fazemos assim e funciona! Não sei explicar porque isto está acontecendo…

Ah, existem várias tags da taglib struts-tag como s:textfield, s:radio e outras…

Abaixo alguns links que podem te ajudar

http://www.vaannila.com/struts-2/struts-2-tutorial/struts-2-tutorial.html
http://www.roseindia.net/struts/struts2/index.shtml
http://www.scribd.com/doc/6212696/Struts-2-Basics