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

JSF Java Discussion :

Création de formulaires dynamique?


Sujet :

JSF Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 25
    Par défaut Création de formulaires dynamique?
    Bonjour,
    j'ai codé une application Web basé sur JSF qui crée des formulaires d'édition pour une base de données. J'ai une page qui demande le url de la DB, le username et le password, on click sur next et l'application fait une introspection de la DB et crée ensuite un formulaire pour chaque table identifiée.

    Ce que je fais actuellement :
    Pour chaque table
    crée jsf form
    crée form bean ( et le compile)
    ajoute un navigation case à faces-config.xml


    Mon problème est qu'après avoir cliqué sur next et que les formulaires sont crée, je redirige vers le premier formulaire crée. Ceci ne fonctionne pas (évidemment étant donné que j'ai ajouté des bean et modifier le fichier xml). Je dois donc redémarrer le serveur, ce qui n'est pas vraiment orienté utilisateur...Je veux donc ne pas avoir à redémarrer le serveur.
    Merci.
    My problem is that i must reboot the server to access my new forms...this is not user oriented at all. Any solution out there?
    Thank you.

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Par défaut
    Aprés le formulaire de l'URL

    tu appels une page qui présente la table DB (pageDB.jsf)

    et dedans:

    <h:panelGrid binding="monBean.monPanelGrid" />

    monBean est un baching qui contient un HtmlPanelGrid monPanelGrid;

    il faut crée de facon programmatique monPanelGrid après avoir demander l'URL à l'utilisateur. Un bon conseil, bien comprendre le cyclde des requetes JSF

  3. #3
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Citation Envoyé par Alec6
    Aprés le formulaire de l'URL

    tu appels une page qui présente la table DB (pageDB.jsf)

    et dedans:

    <h:panelGrid binding="monBean.monPanelGrid" />

    monBean est un baching qui contient un HtmlPanelGrid monPanelGrid;

    il faut crée de facon programmatique monPanelGrid après avoir demander l'URL à l'utilisateur. Un bon conseil, bien comprendre le cyclde des requetes JSF
    Ca, c'est fortement déconseillé et le résultat ne sera pas du propre comme on dit, mais ça reste toujours une alternative à envisager.

    Je fais quelque chose de similaire actuellement. En fait, j'ai un POJO persistant (via JPA Hibernate) à la place d'une table à la BD, mais je pense que ça peut revenir au même.

    Ce que je fais, c'est de créer un Map<String, Object> qui est rempli par introspection (via l'API JavaBeans mais tu peux envisager bean-utils d'Apache).

    Ensuite, je déclare une chose comme ceci dans mon backing bean :
    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
     
    public class MyController {
      private Map<String, Object> properties;
     
      public MyController(Object o){
        remplir le map via reflection
      }
     
      public Set<String> getPropertiesNames(){
        return properties.keySet();
      }
     
      public Map<String, Object> getProperties(){
        return properties;
      }
    }
    Tu declares ce bean dans ton faces-config.xml, et dans ta page JSF, tu mets une chose de cet ordre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <h:dataTable value="#{mycontroller.propertiesNames}" var="prop">
      <h:column>
        <h:outputText value="#{prop}"/>
      </h:column>
     
      <h:column>
        <h:inputText value="#{controller.properties[prop]}"/>
      </h:column>
     
    </h:dataTable>
    Et le tour est joué !
    RQ: n'essaies pas ce code sur autre propriétés que des Strings ! Autrement, t'auras à concevoir toute une usine à gaz (convertisseurs, etc.)
    Enfin, Désolé pour le "trop de code et peu d'explication" !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 25
    Par défaut
    Non les formulaires en question sont des formulaires permettant l'ajout d'une nouvelle entrée pour la table associées.
    Ex:
    table employé (id,nom)
    Formulaire avec avec input hidden ID et input text Nom
    Quand on click sur ok l'enregistrement est persisté dans la base de données.
    Mais ce n'est pas ca mon problème.
    Mon problème c'est que j'ai une application qui est basée sur des formulaires non existants au départ. On commence donc par une page de configuration qui appel du code java créant les formulaires en questions (avec bean et faces-config correspondant). Après la configuration il faut que je redirige vers le premier formulaire nouvellement crée. C'est la qu'est mon problème car lorsque je tente d'y accéder le serveur ne trouve pas la ressource. Je dois le redémarrer pour voir les changements et y accéder. Je cherche un moyen de ne pas avoir à redémarrer...

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    Ne pourras tu pas créeer tes beans "programmatiquement".

    En passant par :FacesContext.getCurrentInstance..getCurrentInstance().getApplication().createValueBinding(
    "#{monBean}")
    Ou peut etre par d'autre méthode du facesContext.

    Pour la navigation il doit aussi y avoir moyen de la construire programmatiquement.

Discussions similaires

  1. CRÉATION DE FORMULAIRE DYNAMIQUE
    Par blueette dans le forum Modélisation
    Réponses: 0
    Dernier message: 26/04/2013, 13h49
  2. [AC-2003] Création de formulaire dynamique
    Par newtownz dans le forum VBA Access
    Réponses: 8
    Dernier message: 17/08/2009, 15h47
  3. [JSF] Création de formulaire dynamique, Pb UIViewRoot
    Par JCitrouille dans le forum JSF
    Réponses: 9
    Dernier message: 02/01/2009, 17h52
  4. [2.0] Création de formulaires dynamiques
    Par mister3957 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/08/2007, 16h22
  5. [VB6] Création de formulaire dynamique de recherche
    Par Mat_76 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 07/05/2007, 09h41

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