IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Demande d'information génération PDF et droits d'accès sur élément graphique


Sujet :

Développement Web en Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2009
    Messages : 132
    Points : 83
    Points
    83
    Par défaut Demande d'information génération PDF et droits d'accès sur élément graphique
    Bonjour à tous,
    Je ne viens pas souvent poser des questions sur le forum, car je cherche par moi même, mais ici j'ai besoin de conseil.

    Je suis en dernière année de bachelier en programmation, et on me demande de faire un petit programme (enfin deux) en java (jsp).

    Je vais travailler avec la génération de document au format PDF.
    l'idée est d'avoir un gabarit d’une ou plusieurs lettres (format Word ou autre si vous avez meilleure solution) et dans ces lettres, avoir divers champs qui appel un contenu (genre nom, prénom, service, produits,...) qui se trouve en dB (mysql), un peux comme un publipostage, et à la fin qu'il génère le PDF et le sauve dans un dossier sur le serveur.

    Quel api utilisez-vous ? je n'y connais encore rien dans ce domaine, donc si vous avez un api qui en plus a une bonne documentation, je suis preneur, car il y en a tellement.

    Je voudrais aussi si je n'abuse pas vous poser une question sur la façon de coder une interface graphique jsp (et css).

    Je vous explique.
    Dison qu'il y à trois types d'utilisateur sur l'application (utilisateur, gestionnaire et administrateur), par rapport au type de login utiliser un droit est donner à la personne qui se connecte. jusque-là tout va bien
    après au niveau de l'interface graphique, comment fait vous...

    un exemple au niveau des boutons :
    Certains utilisateurs peuvent voir ou ne pas voir certains boutons. Dans mon application de l'année passée sous swing j'avais une interface qui créer mes boutons et qui teste le type de l'utilisateur, donc quand je démarre l'application j'appel mon bouton en lui passant en argument le type de l'utilisateur et le nom du bouton, si admin OK visible si pas bouton invisible.

    Est-ce que cela est une bonne solution en jsp ?

    Des amis de classe me disent de codé une page pour utilisateur, une page pour administrateur et un pour gestionnaire, moi perso je trouve lourd de devoir faire trois pages identiques avec bouton ou non d'après le login.
    On m’a dit que l'on ne teste pas sur des éléments graphiques pour accorder des droits d'accès sur ces derniers.

    Quand pensé vous ? Comment fait vous ?

    L'application sera par après utilisée comme application métier dans le service ou je travaille.

    J'espère avoir été assez explicite dans ma demande d'information, si pas je veux bien essayer de reformuler mes questions.

    Un tout grand merci à tous et meilleurs vœux.

    M@t
    Ryle Software
    www.rylesoftware.com

  2. #2
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Points : 2 370
    Points
    2 370
    Par défaut
    Pour la génération de fichiers PDF, il existe plusieurs librairies telle que iText.

    Après il vaut mieux se lancer dans des frameworks de reporting comme JasperReports.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    personellement, malgrés le manque de documentation, j'apprécie le coupe JODReport / JODConverter. Le premier permet de créer des documents openoffice à partir d'un ensemble de données + template openoffice. Le deuxième permet de convertir des documents de tous type entre eux. En ce et y compris la conversion openoffice -> pdf. Il présente l'avantage que les templates peuvent être créés directement depuis openoffice.

    Bref, tout dépend du besoin exact:

    itext: pour un controle totale par le dev, mais peu évolutif (le code dirige le document généré)
    jasper report: pour des tableau, des rapports d'activité, des graphes et tout, customizable par template, templates pas toujours, il me semble, évident à écrire pour un utilisateur lambda
    jodreport: pour l'injection de données dans une document texte réalisé par un user lambda. Facile à mettre en oeuvre, limité dans ses possibilités (pas question de générer des graphes, même si on peut injecter des images)

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Pour en avoir essayé plusieurs, actuellement, c'est le couple iReport + jasperReports qui me convient le mieux pour tous les cas.

    iText est l'API bas niveau pour générer du pdf, on peut faire énormément de choses mais c'est beaucoup plus compliqué (et on n'est pas vraiment dans ton besoin de modèle externe enrichi).

    Avec JSF et Seam, on peut directement générer un pdf à partir d'un modèle de page facelets, une autre voie à explorer...

    Joyeuses fêtes
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2009
    Messages : 132
    Points : 83
    Points
    83
    Par défaut
    Merci à tous pour votre réponse, je pense partir sur iReport dans un premier temps, car si on me demande plus par la suite je peux ainsi déjà l'implémenter.

    Par contre est ce que dans iReport je peux lui passer des paramètre comme pour une méthode ?

    je m'explique :
    Je génère donc un document tout préparer (texte) ou je dois y ajouter des champs spécifique à un choix de l'utilisateur dans l'application. et ce que je peux lui passer en paramètre les choix de l'utilisateur pour la requête sql et que iReports intègre au documents les résultat des ces paramètre passer en sql ?

    Est ce que je suis claire ?

    et au niveau de mon autre question concernant les droits sur des éléments graphiques, avez vous une méthode spécifique pour cela ? comment faite vous ?

    encore merci pour votre aide
    et Joyeux Noel à vous tous ;-)

    M@t
    Ryle Software
    www.rylesoftware.com

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Pour les paramètres passé de l'application à jasperReports, évidement oui, c'est possible.

    Pour l'interface graphique jsp, il y a 2 façon de voir la chose :

    - côté serveur
    - côté client

    Dans le premier cas, on va tout simplement tester un élément pour générer ou non le bouton (dans ton cas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    <jsp:useBean .../>
     
    <% if (monBean.getMaPropriete().equals("...")) { %>
    <input type="button" value="Enregistrer" onclick="..."/>
    <% } %>
    ...
    On peut également utiliser certaines bibliothèques qui feront les choses syntaxiquement différemment, mais au final, ça revient au même.

    Dans le deuxième cas, c'est le client qui masquera ou non le bouton par de code javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <html>
    <head>
    ...
    <script>
    var administrateur = <%=monBean.isAdministrateur ? "true" : "false"%>
    ...
    </script>
    </head>
    <body>
    <form>
     
    <input id="enregistrer" type="button" value="Enregistrer" onclick="..."/>
     
    <script>
    if (!administrateur)
    {
       document.getElementById("enregistrer").style.display = "none";
    }
    Le seul avantage de la deuxième solution réside dans la possibilité de modifier la présentation dynamiquement en fonction d'un choix sur la page.
    Si le choix est lié au rôle de l'utilisateur, ça relève d'une information statique, donc, autant utiliser la méthode 1.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2009
    Messages : 132
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Pour les paramètres passé de l'application à jasperReports, évidement oui, c'est possible.

    Pour l'interface graphique jsp, il y a 2 façon de voir la chose :

    - côté serveur
    - côté client

    Dans le premier cas, on va tout simplement tester un élément pour générer ou non le bouton (dans ton cas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    <jsp:useBean .../>
     
    <% if (monBean.getMaPropriete().equals("...")) { %>
    <input type="button" value="Enregistrer" onclick="..."/>
    <% } %>
    ...
    On peut également utiliser certaines bibliothèques qui feront les choses syntaxiquement différemment, mais au final, ça revient au même.

    Dans le deuxième cas, c'est le client qui masquera ou non le bouton par de code javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <html>
    <head>
    ...
    <script>
    var administrateur = <%=monBean.isAdministrateur ? "true" : "false"%>
    ...
    </script>
    </head>
    <body>
    <form>
     
    <input id="enregistrer" type="button" value="Enregistrer" onclick="..."/>
     
    <script>
    if (!administrateur)
    {
       document.getElementById("enregistrer").style.display = "none";
    }
    Le seul avantage de la deuxième solution réside dans la possibilité de modifier la présentation dynamiquement en fonction d'un choix sur la page.
    Si le choix est lié au rôle de l'utilisateur, ça relève d'une information statique, donc, autant utiliser la méthode 1.
    Super merci pour ta réponse.
    Dans mon application l'année passer, j'avais créer un classe de type interface et la je créer mes boutons suivant certaine conditions.

    quand j'ai dit de faire cela cette année (programmation en équipe) on ma dit tu es fou, il ne faut pas donner des droits sur des éléments graphique.

    l'idée des autres étudiant si j'ai bien compris, est de créer autant de page que de droit d'accès il y à, et suivant ces page alors mettre ou ne pas mettre les éléments d'après le droit donnée et c'est suivant le type de login que l'on ouvre tel ou tel page.

    pour ma part je trouve cela assez lourd et je préfère re faire un ou des interface pour la création de bouton ou autre et tester dans la méthode le type d'accès.

    Tu en pense quoi ? ma méthode est valable ? (c'est un peux comme ton premier exemple)

    Pour Jasper merci de l'info
    Ryle Software
    www.rylesoftware.com

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Pour ma part, il est totalement exclu de faire autant de pages qu'il y a de rôles pour les utilisateurs d'une page.
    Il va de soit que les restrictions particulières seront faites par des tests dans la page jsp (comme tu pensais le faire).
    Pour la manière de faire, il y a des méthodes plus ou moins esthétiques, celle que je t'ai montrée étant la plus lourde.
    Quand les tests sont à faire en fonction d'un rôle lié à l'utilisateur, il est judicieux de développer (si on n'a pas déjà une bibliothèque de tag qui le fait) un taglib pour encadrer les éléments à protéger. Ça ressemblera à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <%@ taglib uri="/WEB-INF/struts-layout-addons.tld" prefix="addons" %>
    ...
    <addons:roles roles="Administrateur Utilisateur">
    <input type="button" ... />
    </addons:roles>
    ...
    Ci-dessous le code du tag
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    package com.obia.safe.taglib;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.tagext.BodyTagSupport;
    import javax.servlet.jsp.tagext.Tag;
     
    public class RolesTag extends BodyTagSupport
    {
        private static final long serialVersionUID = 1;
        private String roles;
     
        @Override
        public int doStartTag() throws JspException
        {
            HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
            if (request.getUserPrincipal() == null)
            {
                return Tag.SKIP_BODY;
            }
     
            for (String role : roles.split(" "))
            {
                if (request.isUserInRole(role))
                {
                    return Tag.EVAL_BODY_INCLUDE;
                }
            }
     
            return Tag.SKIP_BODY;
        }
     
        public String getRoles()
        {
            return roles;
        }
     
        public void setRoles(String roles)
        {
            this.roles = roles;
        }
    }
    et la dtd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
                            "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
    <taglib>
        <tlibversion>1.0</tlibversion>
        <jspversion>1.1</jspversion>
        <shortname>addons</shortname>
        <info>Addons for Struts-Layout</info>
     
        <tag>
            <name>roles</name>
            <tagclass>com.obia.safe.taglib.RolesTag</tagclass>
            <bodycontent>JSP</bodycontent>
            <attribute>
                <name>roles</name>
                <rtexprvalue>true</rtexprvalue>
            </attribute>
        </tag>
     
    </taglib>
    Comme tu le vois, c'est extrêmement simple à réaliser
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2009
    Messages : 132
    Points : 83
    Points
    83
    Par défaut
    ok donc j'ai raison alors

    mais par contre je préfère ta première solution que je comprend mieux par rapport au taglib

    je vais me documenter sur tout cela

    merci pour les infos
    Ryle Software
    www.rylesoftware.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Droit d'acces sur SAMBA
    Par bmamine dans le forum Réseau
    Réponses: 1
    Dernier message: 20/04/2006, 18h34
  2. Droits d'accès sur les fichiers
    Par billbocquet dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 11/01/2006, 11h24
  3. Droits d'accès sur un dossier
    Par Ricou13 dans le forum Apache
    Réponses: 7
    Dernier message: 03/01/2006, 22h53
  4. [XSLFO & génération pdf] retrait à droite d'un texte
    Par flzox dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 23/06/2005, 16h47
  5. Droit d'acces sur rep partagé Windows
    Par MrEddy dans le forum Réseau
    Réponses: 2
    Dernier message: 10/02/2004, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo