Duvida apostila fj21 ActionErrors do Struts

3 respostas
ribclauport

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....

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");
	}

}

3 Respostas

R

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

E

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.

Hildebrando_Pedroni

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.

Criado 26 de novembro de 2009
Ultima resposta 2 de mar. de 2010
Respostas 3
Participantes 4