2012-02-29 3 views
2

GAF 애플리케이션에서 gwt-upload이 작동합니다. suggested으로, 나는 DataStore에서 파일의 저장을 다루기 위해 Custom UploadAction을 구현했다. 코드는 다음과 같이 진행됩니다gwt-upload에서 UploadAction에 요청 매개 변수를 보냈습니다.

보시다시피
public String executeAction(HttpServletRequest request, 
     List<FileItem> sessionFiles) throws UploadActionException { 
    logger.info("Starting: DatastoreUploadAction.executeAction"); 
    String executeAction = super.executeAction(request, sessionFiles); 

    for (FileItem uploadedFile : sessionFiles) {    
     Long entityId = new Long(2001); // This is where i wanna use a request parameter 
     InputStream imgStream; 
     try { 
      imgStream = uploadedFile.getInputStream(); 
      Blob attachment = new Blob(IOUtils.toByteArray(imgStream)); 
      String contentType = uploadedFile.getContentType(); 
      appointmentDao.setAppointmentAttachment(entityId, attachment, 
        contentType); 
     } catch (IOException e) { 
      logger.error("Unable to store file", e); 
      throw new UploadActionException(e); 
     } 

    } 

    return executeAction; 
} 

이는 DAO 클래스는 데이터 저장소에 업로드 된 파일을 저장하기 위해 "에는 EntityID"을 필요로한다. 이제 하드 코딩 된 값으로 작업하고 괜찮아요,하지만 entityID 요청 매개 변수로 클라이언트에 의해 보내고 싶습니다.

private MultiUploader defaultUploader; 

그렇게 난 내 UploadAction에서 사용할 수있는 요청 매개 변수를 설정 MultiUploader - 또는 다른 Widget- 추적 할 수없는 가망 : 업로드를 수행하는 위젯은 MultiUploader입니까?

답변

4

예, 클라이언트 측 코드에서 설정할 수 있습니다.
방법이있다 : MultiUploader #setServletPath(java.lang.String) 예를 들어, :

final MultiUploader u = new MultiUploader(); 
    ... 
    ... 
    ... 
    u.setServletPath(u.getServletPath() + "?entityId="+myObject.getEntityId()); 

서버 측에서 :

String entityId= request.getParameter("entityId"); 

자세한 내용은이 읽기 : 내가 원하는 Sending additional parameters to the servlet

+0

그냥 코드. 고마워요! –

관련 문제