J’aimerais publier des données dans un template Excel pas seulement avec les données qui viennent de la base mais j’aimerais aussi permettre l’utilisateur d’ajouter quelques unes. Comment est-ce que je peux facilement passer des valeurs dans ce fichier Excel.
J’ai préparé un template de publication de type méthode. J’aimerais savoir comment je peux permettre l’utilisateur de passer des paramètres à cette fonction java. Les paramètres qui seront saisies par l’utilisateur ne sont pas stockés dans la base de données.
Solution 1 : une boite de dialogue qui demande l’utilisateur de saisir des valeurs.
Solution2 : Ajouter 2 champs de textes dans la liste (Voir l’image).
Si l’export de votre liste prend des paramètres (hors filtres ou autre fonction de tris sur la liste), il est préférable :
de créer une Action de liste avec dans l’onglet Validation les 2 champs question non persistant, une boite de dialogue simple sera affichée
la méthode back de cette action prendra en paramètre le Map des paramètres (nom du champ => valeur saisie) et implémentera l’export Excel dans un champ document persistant de votre objet (ou retourne l’URL du document, ou du javascript client de preview du doc…)
pour que l’utilisateur peut alors prévisualiser ou télécharger
Si les 2 champs sont des filtres, autant laisser l’utilisateur filtrer lui-même la liste ou lui paramétrer des recherches prédéfinies.
Oui une action avec paramètres me semble la bonne approche dans ce contexte.
Le code de l’action valorise un ou plusieurs paramètres d’objet this.setParameter("<param name>", <param value>))
L’action retourne un appel à la publication et la méthode de la publication récupère les valeurs de ces paramètres d’objet par this.getParameter("<param name>")
Juste un petit souci avec cet appel à la publication !!!
J’ai préparé un template de publication Excel de type méthode qui fonctionne bien. Mais quand j’appelle la fonction invokePrint, la méthode est bien appelé mais le fichier ne se télécharge pas.
merci d’avance.
voici le code et la capture d’écran.
public byte[] getFiscalYear(Map<String,String> params){
this.setParameter("PeriodFiscal", params.get("anneesImpositionDialog"));
try{
return (byte[]) this.invokePrint("DomsecoPublicationExcel") ;
}catch(Exception e ){ /*log*/
}
return null;
}
Ensuite j’ai crée un template de publication de type méthode exactement comme celui qui se trouve sur le demo contacts.
Maintenant, au lieu de cliquer le bouton pour générer le fichier, j’aimerais appeler la publication depuis la
méthode getFiscalYear pour que l’utilisateur puisse télécharge le fichier.
Les méthodes appelées par les actions renvoient du texte (typiquement des messages ou un “redirect” vers autre chose) mais pas directement un contenu binaire à downloader…
Je vais regarder comment faire pour qu’une action déclenche l’appel d’un print template
Merci pour votre réponse, C’est exactement cela que je cherchais. Par contre, une fois que le fichier excel est téléchargé, la vue (la liste sur laquelle l’action se trouve ) deviens invisible. Est-ce normal ?
public String getFiscalYear (Map<String,String> params){
this.setParameter("PeriodFiscal", params.get("anneesImpositionDialog"));
try{
return this.sendRedirect(HTMLTool.getPrintTemplateURL(this.getName(), this.getInstanceName(), "DomsecoPublicationExcel"));
}catch(Exception e ){
AppLog.error(getClass(), e.getStackTrace()[0].getMethodName() , "Exception lors l'invocation de la méthode generateStatistique()", e, getGrant());
}
return null;
}