Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(BUG) Upload com input file em branco e iogi #454

Closed
oriolw opened this issue Aug 21, 2012 · 14 comments
Closed

(BUG) Upload com input file em branco e iogi #454

oriolw opened this issue Aug 21, 2012 · 14 comments

Comments

@oriolw
Copy link

oriolw commented Aug 21, 2012

Quando confirmo um form com o input file (Upload) em branco o VRaptor adiciona uma mensagem no objeto Validator: "Invalid upload". Se trocar o jar do iogi pelo do ognl o problema desaparece. Para o upload me baseei no exemplo da documentação do VRaptor. Estou com a versão 3.4.1 do vraptor.

mensagem no log:

11:38:05,414 DEBUG IogiParametersProvider:56 - IogiParametersProvider is up
11:38:05,415 DEBUG LazyInterceptorHandler:58 - Invoking interceptor ParametersInstantiatorInterceptor
11:38:05,415 DEBUG ParanamerNameProvider:51 - Found parameter names with paranamer for ImagemController.gravar(Imagem, UploadedFile) as [imagem, arquivoImagem]
11:38:05,416 DEBUG IogiParametersProvider:69 - getParametersFor() called with parameters Parameters() and targets [Target(name=imagem, type=class br.com.pagina.modelo.Imagem), Target(name=arquivoImagem, type=interface br.com.caelum.vraptor.interceptor.multipart.UploadedFile)].
11:38:05,416 DEBUG ParanamerNameProvider:51 - Found parameter names with paranamer for Imagem() as []
11:38:05,417 WARN UploadedFileConverter:51 - There was an error when uploading the file {}. Please verify if commons-fileupload jars are in your classpath or you are using a Servlet 3 Container.
11:38:05,418 DEBUG ParametersInstantiatorInterceptor:88 - There are conversion errors: [ValidationMessage{category=arquivoImagem, message=Invalid upload, parameters=null}]
11:38:05,419 DEBUG ParametersInstantiatorInterceptor:90 - Parameter values for [DefaultResourceMethod: ImagemController.gravarImagemController.gravar(Imagem, UploadedFile)] are [br.com.pagina.modelo.Imagem@1786b2ca, null]

http://www.guj.com.br/java/280524-vraptor--upload

@dtelaroli
Copy link
Contributor

estou tendo o mesmo problema.
estou com a versão 3.4.1, há previsão de resolução?

a questão de mudar de iogi para iogl eu não entendi como fazer, posso fazer também como?

@oriolw
Copy link
Author

oriolw commented Sep 3, 2012

Você tem que trocar a biblioteca do iogi pela do ognl. As duas estão no download do vraptor, o iogi na pasta /lib/mandatory, o jar do ognl fica na pasta /lib/optional/ognl. Eu também uso o 3.4.1.

@dtelaroli
Copy link
Contributor

então...
estou usando maven, onde o proprio busca todas as dependencias
como eu faria pra adicionar este artefato lá, você sabe?

@dtelaroli
Copy link
Contributor

vlw, consegui fazer
adicionei uma exclusão do artefato do pom do vraptor e joguei a lib diretamente na pasta porque não encontrei o artefato...

se existe e não sei alguém postaí.

@lucascs
Copy link
Member

lucascs commented Sep 3, 2012

só colocar isso no seu pom, não precisa fazer nenhuma exclusão:
<dependency> <groupId>ognl</groupId> <artifactId>ognl</artifactId> <version>2.7.3</version> </dependency>

@dtelaroli
Copy link
Contributor

vlw lucas

garcia-jj added a commit that referenced this issue Sep 20, 2012
@garcia-jj
Copy link
Member

Fixed.

@dipold
Copy link
Member

dipold commented Oct 25, 2012

Também pode-se criar um arquivo a seguir como uma solução temporária:

@Convert(UploadedFile.class)
public class UploadedFileConverter implements Converter {
    private final HttpServletRequest request;
    public UploadedFileConverter(HttpServletRequest request) {
        this.request = request;
    }
    public UploadedFile convert(String value, Class type, ResourceBundle bundle) {
        Object upload = request.getAttribute(value);
        return upload == null ? null : type.cast(upload);
    }
}

@lucascs
Copy link
Member

lucascs commented Oct 26, 2012

nao precisa do null check... type.cast(null) retorna null

On Thu, Oct 25, 2012 at 8:03 PM, dipold notifications@github.com wrote:

Também pode-se criar um arquivo a seguir como uma solução temporária:

@convert(UploadedFile.class)
public class UploadedFileConverter implements Converter {

private final HttpServletRequest request;

public UploadedFileConverter(HttpServletRequest request) {
    this.request = request;
}

public UploadedFile convert(String value, Class extends UploadedFile> type, ResourceBundle bundle) {
    Object upload = request.getAttribute(value);
    return upload == null ? null : type.cast(upload);
}

}


Reply to this email directly or view it on GitHubhttps://github.com//issues/454#issuecomment-9795967.

@plentz
Copy link

plentz commented Jun 3, 2014

@lucascs isso foi resolvido ou se usar iogi tem que usar a solução temporária do @dipold mesmo?

@garcia-jj
Copy link
Member

Isso foi resolvido com a adição deste componente que o Dipold sugeriu. Ele está no core.

Você pode fazer um teste?

@plentz
Copy link

plentz commented Jun 3, 2014

@garcia-jj hum, estranho. aqui chega null mesmo no controller. Dei print no request.getParameterMap() e aparentemente o file está indo {file=[Ljava.lang.String;@ae98fa}. O estranho é que debugando o converter, o value no método convert chega null. Alguma ideia?

@garcia-jj
Copy link
Member

Ahh, é que este bug é para quando o file não for informado venha nulo mesmo. Antes dava uma exception.

No seu caso você tem um arquivo mas vem null, certo?

Você definiu o form como multipart?

@plentz
Copy link

plentz commented Jun 3, 2014

@garcia-jj consegui resolver. o upload é feito usando o danialfarid/angular-file-upload. O problema era o nome que ele enviava o arquivo, que por default é 'file' e eu estava recebendo com outro nome no controller. valeu :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants