2013-10-28 2 views
0

여기 파일을 업로드하려면 struts2를 사용하고 있습니다. 내 파일을 업로드하려고 할 때 String filePath 근처에서 null 포인터 예외가 발생합니다.이 문제에서 나를 도와주세요. 그리고 내가 업로드 한 것을 확장 기능으로 찾고 싶습니다.파일 경로 근처에 null 포인터 예외를 업로드

public class ImportAction extends ActionSupport implements ServletRequestAware { 

     public File getUploadfile() { 
      return uploadfile; 
     } 

     public String getUploadFileName() { 
      return uploadFileName; 
     } 

     public void setUploadFileName(String uploadFileName) { 
      this.uploadFileName = uploadFileName; 
     } 

     public void setUploadfile(File uploadfile) { 
      this.uploadfile = uploadfile; 
     } 
     private static final long serialVersionUID = 1L; 
     private LoginBean bean; 
     private File uploadfile; 

     public String getFileContentType() { 
      return fileContentType; 
     } 

     public void setFileContentType(String fileContentType) { 
      this.fileContentType = fileContentType; 
     } 
     private String uploadFileName; 
     private String fileContentType; 
     private HttpServletRequest servletRequest; 
     RegisterDAO dao = new RegisterDAO(); 

     public LoginBean getBean() { 
      return bean; 
     } 

     public void setBean(LoginBean bean) { 
      this.bean = bean; 
     } 

     /** 
     * 
     * @return 
     * @throws 
     * Exception 
     */ 
     @SuppressWarnings("unchecked") 
     @Override 
     public String execute() throws Exception { 
      try { 
       String filePath = servletRequest.getSession().getServletContext().getRealPath("/"); 
       System.out.println("Server path:" + filePath); 
       File fileToCreate = new File(filePath, this.uploadFileName); 
       FileUtils.copyFile(this.uploadfile, fileToCreate); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       addActionError(e.getMessage()); 
       return INPUT; 
      } 
      Model m = new Model(); 
      String result = m.fileimport(uploadfile, uploadFileName); 
      if (result.equals(SUCCESS)) { 
       return SUCCESS; 
      } else { 
       addActionError(getText(result)); 
       return "failure"; 
      } 
     } 

     @Override 
     public void validate() { 
      System.out.println("inside validate of LA"); 
     } 

     @Override 
     public void setServletRequest(HttpServletRequest servletRequest) { 
      this.servletRequest = servletRequest; 
     } 
    } 
+0

으로 변경하면 유효한/null이 아닌 servletRequest 객체가 유지됩니까? –

+0

죄송합니다.이 덧글을받지 못했습니다. – user2838630

+0

servletRequest 객체가 null이 아닌지 확인하십시오. 그것을 확인하는 경우 null을 넣으십시오. –

답변

0

대부분 servletRequest이 널 포인터이므로 널 포인터 예외가 발생합니다. 컨텍스트를 통해 초기화해야 할 수도 있습니다.

+0

예를 들어 답장을 보내면 – user2838630

0

이 잘못 :

private File uploadfile; 
private String uploadFileName; 
private String fileContentType; 
그것은으로 (세터와 함께) 변경해야

:

private File uploadFile; /* Uppercase F */ 
private String uploadFileName; 
private String uploadContentType; /* "upload" prefix */ 

Read more here.

+0

이 여전히 유효하다. – user2838630

+0

@Andrea 방금 놓친 이름은'uploadfile'이므로 다른 매개 변수는 'uploadfileFileName'과'uploadfileContentType' –

+0

나는 당신의 요점을 알지 못합니다. – user2838630

0

필드 이름이 잘못되었습니다.

private File uploadfile; 
private String uploadfileFileName; 
private String uploadfileContentType; 

//getters & setters 
관련 문제