Recharger le formulaire

Bonjour,

Je change des valeurs dans des champs par code ( avec un validateAndSave).

Les valeurs sont bien changées mais il est nécessaire de recharger le formulaire pour les voir.
image

Que puis-je ajouter dans mon code pour recharger le formulaire?

		if (this.getField("HertaProcessStatut").getValue().equals("2"))
		{
			this.setFieldValue("HertaProcessStatut", "3");
			this.setFieldValue("HertaProcessDateFichierCSV", dateTimeNow() );
			try{
				new BusinessObjectTool(this).validateAndSave();
			}
			catch(Exception e){
				AppLog.error(getClass(), e.getStackTrace()[0].getMethodName(), "Bouton TransAttr", e, null);
			}

		} else {
			
			return Message.formatSimpleInfo("L'export ne peut se faire qu'à l'étape : \n VALIDE AVANT ATTRIBUTION" );
		}

Fabrice

Bonjour Fabrice,

Dans quel hook est appelé ce code ?
Peux-tu préciser le besoin ?
Merci

le code est dans une méthode appelée par une action.

La méthode créée un fichier CSV et place la date de création de ce fichier dans un champ.

J’aimerai que le champ affiche directement la date sans devoir rafraîchir ou recharger la page.

Bonjour,

Une action back fait automatiquement un enregistrement puis l’appel de la méthode puis recharge le formulaire si il n’y a pas un redirect ou un appel javascript.

Mon action est bien en back mais il n’y a pas de rafraichissement

	public String boutonTransAttr(){
		AppLog.info(getClass(), "Création du CSV", null ,  getGrant());

		//contrôle du statut : doit être sur l'état process 2 pour continuer, sinon message à l'utilisateur et fin de l'action
		if (this.getField("HertaProcessStatut").getValue().equals("2"))
		{
			this.setFieldValue("HertaProcessStatut", "3");
			this.setFieldValue("HertaProcessDateFichierCSV", dateTimeNow("yyyy-MM-dd hh:mm:ss") );
			try{
				new BusinessObjectTool(this).validateAndSave();
			}
			catch(Exception e){
				AppLog.error(getClass(), e.getStackTrace()[0].getMethodName(), "Bouton TransAttr", e, null);
			}

		} else {
			
			return Message.formatSimpleInfo("L'export ne peut se faire qu'à l'étape : \n VALIDE AVANT ATTRIBUTION" );
		}

		//Construction du contenu du CSV
		ObjectDB eleve = this.getGrant().getTmpObject("HertaEleve");
		eleve.resetFilters();
		eleve.getField("HertaEleveStatut").setFilter("todo");//setFilter("='direct' or ='indirect' or ='nonFin'"); // filtre si nécessaire
		eleve.getField("HertaEleveNom").setFilter("Dutoit");//setFilter("='direct' or ='indirect' or ='nonFin'"); // filtre si nécessaire
		eleve.resetOrders();

		List<String[]> rows = eleve.search();

		//entetes IDHash;DateNaissance;EGID;BatimentID;BonCalc;CauseNonAttribue;AnneeVoie;AnneeProcessus;Statut;LieuInscription
		String csv = "HashID;DateNaissance;EGID;BatimentID;BonCalc;CauseNonAttribue;AnneeVoie;AnneeProcessus;Statut;LieuInscription\n" ;
		
		//boucle sur les entités
		for (String[] row: eleve.search() ){
			eleve.setValues(row);
			
			String IDHash = eleve.getField("HertaEleveId").getValue();
			String DateNaissance = eleve.getField("HertaEleveDateNaissance").getValue();
			String EGID = eleve.getField("HertaEleveEGID").getValue();
			String BatimentID = eleve.getField("HertaEleveBatimentId").getValue();
			String BonCalc = eleve.getField("HertaEleveBonCalcule").getValue();
			String CauseNonAttribue = eleve.getField("HertaEleveCauseNon").getValue();
			String AnneeVoie = eleve.getField("HertaEleveAnneeVoie").getValue();
			String AnneeProcessus = eleve.getField("HertaProcessAnnee").getValue();
			String Statut = eleve.getField("HertaEleveStatut").getValue();
			String LieuInscription = eleve.getField("HertaEleveLieuInscription").getValue();

			csv +=  IDHash +";"+ DateNaissance +";"+ EGID  +";"+ BatimentID +";"+ BonCalc +";"+ CauseNonAttribue +";"+ AnneeVoie +";"+ AnneeProcessus +";"+ Statut +";"+ LieuInscription  ;
			csv += "\n";
		}

			AppLog.info("message fichier CSV pour MICROGIS :::" + "\n" + csv, getGrant());
			
		this.setParameter("CSV", csv); // le contenu est placé en paramètre pour être récupéré par la méthode de la publication

		return this.javascript("$ui.displayPrint(null, 'HertaPctMicrogis', '" + this.getName() + "', '" + this.getRowId() + "')");
	}

Méthode de la publication

	public byte[] creationFichierCsv(PrintTemplate pt)
	{
		AppLog.info(getClass(), "Appel de creationFichierCsv", null ,  getGrant());
		pt.setFilename(pt.getFilename().replace("[info]", dateTimeNow("yyMMddhhmmss")));

		String csv = this.getParameter("CSV");

		return csv.getBytes();
	}

Version :

Version=5.1.38
BuiltOn=2022-04-09 18:54

Oui parce que l’action renvoie vers le printtemplate de l’objet.
Dans l’action, vous pouvez directement exécuter

setFieldValue("HertaProcessDateFichierCSV", Tool.getCurrentDatetime());
save();
...

Pour rappeler la page il faut soit utiliser $ui.displayForm soit appeler la fonction Recharger $("[data-action=reload]").click();

Je vais passer par le script front end, mais je ne sais pas où mettre $("[data-action=reload]").click();

// HertaProcess front side hook
(function(ui) {
	if (!ui) return;
	var app = ui.getAjax();
	// Hook called by each object instance
	Simplicite.UI.hooks.HertaProcess = function(o, cbk) {
		try {

			console.log("HertaProcess hooks loading...");
			var p = o.locals.ui;
			if (p && o.isMainInstance()) {
				p.form.onload = function(ctn, obj) {
					//...
				};
			}
			//...
		}
		catch(e) {
			app.error("Error in Simplicite.UI.hooks.HertaProcess: " + e.message);
		}
		finally {
			console.log("HertaProcess hooks loaded.");
			cbk && cbk(); // final callback
		}
	};
	
	
	
}

)(window.$ui);

Non il n’est pas nécessaire de passer par le script front end.
Votre action peut retourner

return this.javascript("$(\"[data-action=reload]\").click() ;$ui.displayPrint(null, 'HertaPctMicrogis', '" + this.getName() + "', '" + this.getRowId() + "')");

Merci! c’est parfait.

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.