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