Redirect ao exceder limite de upload

Como faço para redirecionar o usuário para uma página e exibir uma mensagem de erro falando que o limite de upload excedeu?

Fiz essas classes:

@Component
@ApplicationScoped
public class CustomMultipartConfig extends DefaultMultipartConfig {

	public long getSizeLimit() {
		return 10 * 1024 * 1024; // 10MB
	}

}
@Resource
public class MyController implements Serializable {
	private final Result resultado;
	public MyController(Result resultado) {
		this.resultado = resultado;
	}
	@Post
	public void carregarArquivo(UploadedFile arquivo) {
		
	}
}

receba o objeto Validator do VRaptor no seu controller. Se ocorrer esse erro no upload, o VRaptor inclui no validator um erro (cuja chave é ‘file.limit.exceeded’), e voce vai conseguir fazer o redirect

algo assim,

public class SeuController {

   private Validator validator;

   public SeuController(Validator validator){
      this.validator = validator;
   }
   public void seuMetodo(UploadedFile file){
       if (validator.hasErrors()){
          //erro no upload, faz o redirect
       } else {
           //nao houve erros no upload, continua o proceso...
       }

   }
}

Melhor é fazer:


 public void seuMetodo(UploadedFile file){  
    validator.onErrorRedirectTo(this).metodo();
    // resto do método
 }

Ok, funcionou!!!
Mas agora como exibo uma mensagem ao usuário dizendo que o limite foi extrapolado?

[quote=Lucas Cavalcanti]Melhor é fazer:

[code]

public void seuMetodo(UploadedFile file){
validator.onErrorRedirectTo(this).metodo();
// resto do método
}
[/code][/quote]

lucas eu tinha pensado nessa abordagem mas pensei que o onErrorRedirectTo só “funcionasse” se o método validate (ou checking, acho) fosse invocado. Não é assim? Se não, melhor :slight_smile:

amigo dandao, voce pode criar no seu arquivo de mensagens, uma mensagem específica para a chave “file.limit.exceeded”, e exibir isso na sua jsp, lá voce pode acessar os erros por ${errors}