Duvida apostila fj21 ActionErrors do Struts

Boa Tarde, Estou tentando fazer funcionar o metodo public ActionErrors validate
da apostila fj21, fiz todos os passos adicionei o input no struts-config, as mensagem de erro no MessageResources.properties
enfim… gostaria de saber se o metodo abaixo está certo… porque eu adicionei o atributo contato na classe para poder acessar no metodo ActionErros pois
na apostila não ta o metodo completo e eu não conseguia pegar a variavel lpara fazer os ifs do ActionErrors… enfim se alguém puder me ajudar… quando eu cadastro vazio ele passa batido… e grava o contato vazio mesmo…

[code]package br.com.caelum.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import br.com.caelum.DAO.ContatoDao;
import br.com.caelum.modelo.Contato;
import br.com.caelum.struts.form.ContatoForm;

public class AdicionaContatoAction extends Action {

Contato contato;

public ActionErrors validate(ActionMapping mapping,
		HttpServletRequest request) {
	ActionErrors erros = new ActionErrors();
	if (contato.getNome() == null || contato.getNome().equals("")) {
		erros.add("email", new ActionMessage("erro.campoEndereco"));
	}
	// verifica o email
	if (contato.getEmail() == null || contato.getEmail().equals("")) {
		erros.add("email", new ActionMessage("erro.campoEmail"));
	}
	// verifica o endereco
	if (contato.getEndereco() == null || contato.getEndereco().equals("")) {
		erros.add("endereco", new ActionMessage("erro.campoEndereco"));
	}
	return erros;
}

public ActionForward execute(ActionMapping mapping, ActionForm form,
		HttpServletRequest request, HttpServletResponse response)
		throws Exception {
	// log
	System.out.println("Tentando criar num novo contato...");
	// formulario do cliente
	ContatoForm formulario = (ContatoForm) form;
	// acessa o bean
	this.contato = formulario.getContato();
	// adiciona ao banco de dados
	ContatoDao dao = new ContatoDao();
	dao.adciona(contato);
	// ok... vusualiza;áo
	return mapping.findForward("ok");
}

}[/code]

cara eu to lendo nesse momento,
soh uma observaçao a linha 23 sua ta errada entres aspas falando
pois ela esta email tb mais eh nome

Boa noite,ribclauport!

Sei que faz um bastante tempo, mas vc ja conseguiu resolver esse problema?

Se não, vamos la!

O metodo esta certo,mas esta no lugar errado, ele deve ser colocado na classe do formulario “ContotatoForm” e não na classe “AdicionaContatoAction”, tenta lá.

Desculpe pelo atraso em responder.

Abraços.

Bom, já que responderam atrasado deixa eu reabrir o topico.

Estou com um problema usando esse exemplo da fj21, na verdade estou tentando aplicar em outro codigo.

Fiz tudo dentro dos conformes, porém quando deixo o campo em branco, o struts não me da nenhuma mensagem de erro, não manda para a action mas não me mostra a mensagem de erro.

então o que falta?

Dentro do form

//Valido aqui se o meu atributo myFile esta vazio
public ActionErrors validate(ActionMapping mapping,HttpServletRequest request){
		ActionErrors erros = new ActionErrors();
		
		if(myFile.getFileName().equals("") && myFile.getFileSize() == 0){
			erros.add("myFile", new ActionMessage("erro.campoArquivo"));
		}
		return erros;
	}

O jsp:



<table width="300px" height="150px" align="center" border="0px" bgcolor="#99ffcc">
			<tr>
				<td colspan="2" align="center">Selecione um arquivo para fazer o upload</td>
			</tr>
			<tr>
				<td colspan="2">
					<html:errors property="myFile"/>
				</td>
			</tr>
			<tr>
				<td>Arquivo :</td>
				<td><html:file property="myFile" /></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><html:submit value="Upload!" /></td>
			</tr>
		</table>

E o struts-config

<action path="/uploadFile" name="UploadFileForm" input="/pages/uploadFile.jsp"
			type="com.teste.uploadFile.action.UploadFileAction" scope="request"
			validate="true">
			<forward name="success" path="/pages/uploadSuccess.jsp" />
			<forward name="failure" path="/pages/uploadFailure.jsp" />
		</action>

dentro do messagesResources tem a seguinte propriedade
erros.campoArquivo = Inclua um arquivo.

Lembrando que não da erro, ele não me deixa continuar como esperado, mas a mensagem de erro não é exibida.