Jalios Community
Spaces
Content
We have not found any result for your search.
We have not found any result for your search.

FormHandler et fichier

Bonjour,

je souhaite effectuer un traitement depuis un fichier csv.

Ma jsp contient un <form> avec, entre autre, les elements suivants:

<form method="post" action="syncFax/syncLaunching.jsp" enctype="multipart/form-data" >
...
<jalios:field name="faxFile" label="Fichier des données de fax" css="">
<jalios:control settings='<%= new FileSettings().singleFile() %>' />
</jalios:field>
....
<div class="col-md-12 spacer-30" style="width: 97%; margin:20px 0px 20px 0px;">
<button class='btn btn-primary plupload-submit' type='Submit' value='true' name='opSubmit'>Extraire les données</button>
</div>
</form>

 

J'ai également declaré le FormHandler suivant :

<jsp:useBean id="formHandler" scope="page" class="app.display.fax.directory.handlers.FaxSyncFormHandler">
     <jsp:setProperty name="formHandler" property="request" value="<%= request %>" />
     <jsp:setProperty name="formHandler" property="response" value="<%= response %>" />
     <jsp:setProperty name="formHandler" property="*" />
</jsp:useBean>

 

Voici mon formHandler .

 

public class FaxSyncFormHandler extends JcmsFormHandler {

Logger logger = Logger.getLogger(FaxSyncFormHandler.class);

private boolean opSubmit = false;

private int syncFaxCount = 0;

private File faxFile ;

@Override
protected void init() {
logger.debug("FaxSyncFormHandler.init()");
}

@Override
public boolean processAction() throws IOException {
if (opSubmit) {
return performSubmit();
}
return false;
}

public boolean performSubmit() throws IOException {
System.out.println("FaxSyncFormHandler.performSubmit()");
logger.info("-- Starting Fax datas synchronization ");

String fileContent;

System.out.println("faxFile : " + faxFile.length());



sendRedirect(ServletUtil.getResourcePath(request));
return true;

}

public boolean isOpSubmit() {
return opSubmit;
}

public void setOpSubmit(boolean opSubmit) {
this.opSubmit = opSubmit;
}


public File getFaxFile() {
return faxFile;
}

public void setFaxFile(File faxFile) {
this.faxFile = faxFile;
}

public int getSyncFaxCount() {
return syncFaxCount;
}

}

Or " System.out.println("faxFile size : " + faxFile.length()); " me retourne un fichier vide

 

Comment recuperer le contenu de mon fichier dans mon formHandler ?

 

Mercide votre aide

4 pts
1 answer
Expert Olivier Jaquemet on 6/21/21 at 2:06 PM

Bonjour Daniel WELTZ ,

Dans la méthode processAction, créez une méthode validateSubmit, pour conditionner l'invocation du performSubmit à la bonne récupération du fichier (et n'oubliez pas d'y ajouter les controles de droits/habilitation requises) : 

  @Override
  public boolean processAction() throws IOException {
    if (validateSubmit()) {
      return performSubmit();
    }
    return false;
  }  

  public boolean validateSubmit() throws IOException {
    if (!opSubmit) {
      return false;
    }

    // Check security
    if (!isLogged) {
      return false;
    }

    DocUploadInfo docUploadInfo = (DocUploadInfo) getUploadedFile("faxFile",false,false);
    if (docUploadInfo == null || docUploadInfo.getStatus() > 1){
      if (docUploadInfo != null){
        logger.debug("validateSubmit()"+docUploadInfo.getStatusMessage(getUserLang()));
      }
      String missingFileMsg = glp("jcmsplugin.myplugin.missing-file");
      addMsgSession(new JcmsMessage("jcmsplugin.myplugin.missing-file", Level.WARN, missingFileMsg));
      return false;
    }

    File uploadedFile = docUploadInfo.getFile();
    
    // TODO : check uploadedFile with you own criteria
    if (!isOK(uploadFile)) {
      // TODO : localized error msg sent to user
      return false;
    }

    return true;
  }
Manager Alex Rameaux Wafo Defo on 9/15/21 at 3:52 PM

Merci Olivier Jaquemet pour cette réponse. Cela fonctionne parfaitement !

1 pt