2010-05-28 30 views
1

Je souhaite générer un rapport PDF dans lequel une colonne (ou cellule/champ) est laissée vide (vide) à dessein. Cette colonne a effectivement une valeur, mais je choisis de ne pas l'afficher. Le titre de la colonne doit toujours être affiché.DynamicJasper (sur Grails) Conserver volontairement une colonne ou un champ vide (vide)

Exemple d'où cela pourrait être utile:

  • colonne vide (vide): Une colonne de commentaires ou des notes sur un côté d'un rapport.
  • Cellule vide (vide): Impression d'un puzzle de sudoku.

Très appréciée. DynamicJasper est génial! Merci à l'équipe de dj.

Cordialement, Pete

+0

Je pense que la fermeture à l'aide devrait faire l'affaire au lieu de déclarer une nouvelle classe. Je vais essayer cela et poster mon code si cela fonctionne. –

Répondre

1

heureux d'annoncer, solution trouvée pour ajouter une colonne « vide » - et en bref, il est de créer une Expression personnalisée.

def cb = ColumnBuilder.getInstance() 
cb = cb.setTitle("Notes") 
cb = cb.setCustomExpression(new BlankExpression()) 
AbstractColumn columnNotes = cb.build() 

Puis ajoutez-le au reste du rapport.

classe BlankExpression est

public class BlankExpression implements CustomExpression { 

    public BlankExpression() { } 

    public Object evaluate(Map fields, Map variables, Map parameters) { 
     return " "; 
    } 

    public String getClassName() { 
     return String.class.getName(); 
    } 
} 

Mais il y a quelques problèmes liés à l'utilisation des customExpressions et Grails.

1er numéro: « getNew() » - Les exemples fournis sur le site DJ utilisent tous « getNew() » http://dynamicjasper.sourceforge.net/docs/HOWTO%20Create%20Custom%20Expressions.html est un exemple de DynamicJasper v3.1.3 alors que le plugin Grails est basé sur v.3.0.6 qui a seulement une méthode getInstance() (obsolète en 3.1.3)

2ème question: Pour autant que je puisse le voir, groovy n'autorise pas les implémentations en classe java, ce qui nous oblige à créer un fichier de classe distinct . Mais ce n'est pas un gros problème. Je peux me tromper à ce sujet, et s'il vous plaît corrigez-moi.

Espérons que cela vous aide aussi.

Cordialement, Pete