2014-11-20 3 views
0

사용자가 자신의 프로필에 사진을 업로드 할 수 있도록 JSF 2.2를 새로 사용하려고합니다.javax.servlet.http.Part가 서버 측으로 전송되지 않음 <h:inputFile>

@Named(value="usuarioController") 
@SessionScoped 
public class UsuarioController extends GenericPersonificacaoCrudController<Usuario>{ 
    private static final long serialVersionUID = 3233882970467365819L; 
    private Part part; 

    public void uploadImage(){ 
     System.out.println(part); 
    } 

    public Part getPart() { 
     return part; 
    } 

    public void setPart(Part part) { 
     this.part = part; 
    } 
} 
: 이것은 컨트롤러

<h:form enctype="multipart/form-data"> 
    <h:inputFile value="#{usuarioController.part}"> 
     <f:ajax listener="#{usuarioController.uploadImage}"/> 
    </h:inputFile> 
</h:form> 

하지만 내 public void uploadImage()javax.servlet.http.Part 부분은 여전히 ​​널 순간에 .. 어쨌든 나는 다음 코드 달성 아약스 동작을 필요로

Tomcat + Weld CDI와 Primefaces 5.1을 사용하여 JSF의 Mojarra 2.2.6 구현을 사용 중입니다. 원시 파일 업로드 구성 요소를 사용하고 있기 때문에 질문과 관련이 없지만, 사용을 시도했음을 알리기 위해 포함하고 있습니다. 나던 mode="advanced"과 함께 작동하는 Ajax를 사용하면 내가 사용하고있는 라이브러리의 비 호환성 또는 충돌 여부가 궁금합니다.

+0

이 힘의 Part는 또한 지정된 디렉토리에 파일을 쓸 수있는 편리한 방법 write()을 가지고 있음을 알아야한다 :

public Part file; //getter and setter public void uploadImagem(){ long fileSize = file.getSize(); byte[] fileStorage = new byte[fileSize]; BufferedInputStream bis = new BufferedInputStream(file.getInputStream); bis.read(fileStorage); //do whatever you want with the array. } 

팁 : 코드를 다음과 같이 보일 것입니다 답장을 보내 주셔서 감사합니다. http://stackoverflow.com/questions/16336795/jsf-2-2-fileupload-does-not-work-with-ajax-form-appears-to-have-incorrect-enc – kolossus

답변

0

<h:inputFile/> 구성 요소의 java 표현을 사용하여 파일에 액세스하려고합니다. 너는 그렇게해서는 안된다. 가지고 계신대로 filejavax.servlet.http.Part의 인스턴스에 바인딩해야합니다. 여기에서 InputStream을 얻을 수 있습니다. 나머지는 그 시점에서 아주 간단합니다. 당신은 직접

+0

답장을 보내 주셔서 감사합니다. 어쨌든 javax.servlet.http.Part의 인스턴스 인 내 파일은 uploadImagem 메서드가 트리거되는 순간 null입니다. 어떤 단서가 있습니까? 다시 한번 감사드립니다. @kolossus –

+0

주변은'' @ MarcosJ.CKichel입니까? 그것을 여기에 게시하십시오. – kolossus

+0

템플릿에 있습니다. 그렇습니다. enctype = "multipart/form-data"속성을 넣었습니다. 테스트 할 모든 템플릿을 덮어 썼는데, 여전히 작동하지 않습니다. mojarra 2.2를 사용하고 있습니다. <: 정의 NAME = "conteudoTabCadastro"UI> \t \t \t