VRaptor validator, onde fica o objeto ${erros} ? (qual escopo)

estou precisando colocar este objeto dentro de outro… para tal, preciso saber onde ele fica, pra qual escopo ele vai… alguem sabe ?

Request, o validator usa result.include(“errors”, errors)

O escopo dele é no request, com o nome errors, e nada mais é que um List<? extends Message>.

pois é … essa lista q é um problema =P … precisava era de um mapa O.O … vou fazer meu encapsulamento maluco

cria um interceptor que pega essa variavel errors e transforma num mapa…

vc pode fazer isso com result.included().get(“errors”) ou algo do tipo

Lucas, não dá para o Lavieri sobrescrever o validator padrão e fazer o mapeamento interno com um map?

se eu soubesse o nome do interceptor é o q eu faria… o.O

Pronto consegui!

					&lt;c:if test="${validatorErrors.notEmpty}"&gt;
						Ocorreram falhas!!
					&lt;/c:if&gt;
					&lt;c:if test="${validatorErrors.hasError.login}"&gt;
						${validatorErrors.message.login}
					&lt;/c:if&gt;
					&lt;c:forEach var="error" items="${validatorErrors.errorList}"&gt;
    					${error.category} - ${error.message}<br />
					&lt;/c:forEach&gt;

eu criei, um objeto q encapsula a lista de mensagem, conforme abaixo

[code]package br.com.simtecnologia.vraptor3.validator;

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.RequestScoped;
import br.com.caelum.vraptor.validator.Message;

@Component
@RequestScoped
public class ValidatorView implements Serializable {
private static final long serialVersionUID = -7168827997755295928L;
private final Result result;
private final Validator validator;
private Map<String,String> message;
private List<Message> errorList;
private Map<String,Boolean> hasError;

public ValidatorView(Result result, Validator validator) {
	this.result = result;
	this.validator = validator;
}

public boolean isNotEmpty() {
	return validator.hasErrors();
}

public boolean isEmpty() {
	return !isNotEmpty();
}

@SuppressWarnings("unchecked")
public List&lt;Message&gt; getErrorList() {
	if (errorList == null)
		errorList = (List&lt;Message&gt;) result.included().get("errors");
	return errorList;
}
	
public Map&lt;String, String&gt; getMessage() {
	if (message == null) {
		message = new HashMap&lt;String, String&gt;();
		hasError = new HashMap&lt;String, Boolean&gt;();
		for (Message m :getErrorList()) {
			message.put(m.getCategory(), m.getMessage());
			hasError.put(m.getCategory(), true);
		}
	}
	return message;
}

public Map&lt;String, Boolean&gt; getHasError() {
	if (hasError == null)
		getMessage();
	return hasError;
}

}
[/code]

e então eu injeto ele em um interceptor, e jogo dentro do result.include, atravez da key validatorErrors

ficou Xou de bola!!

o que o garcia falou é de criar uma classe:

@Component
public class MeuValidator extends DefaultValidator {
     //delegate constructor
     @Override
     public void add(Message message) {
           //adiciona no mapa
          super.add(message);
     }
     //getter pro mapa
}

e na jsp vc consegue acessar via ${meuValidator.mapa}