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

Struts 2 Java Discussion :

Problème d'affichage avec s:property


Sujet :

Struts 2 Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Par défaut Problème d'affichage avec s:property
    Salut

    S'il vous plaît je travaille avec Struts 2 aussi.
    J'avais un problème d'afficher un attribut de l'action au niveau de la vue JSP.
    CI dessous vous trouverez la classe Acceuil.java et la vue JSP je vaux afficher la variable NomDocument.
    Si vous avez même une idée je suis preneur

    Merci pour votre collaboration.
    Acceuil.java
    package example;
    import com.opensymphony.xwork2.ActionSupport;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    public class Acceuil extends ActionSupport
    {
    public static String nom;
    String connexion ()
    {
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    String connectionString= null;
    try
    {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    try
    {
    connectionString ="jdbc:sqlserver://CSS;database=Bilan Prospectif;user=wael;password=09111985";}
    catch (Exception e)
    {
    System.out.println(e.getMessage());
    e.printStackTrace();
    }
    conn = DriverManager.getConnection(connectionString);
    stmt = conn.createStatement();
    rs = stmt.executeQuery("SELECT DESIGNATION_CAPITAL FROM CAPITAL where ID_CAPITAL=11");
    while (rs.next())
    {
    nom=(rs.getString("DESIGNATION_CAPITAL"));
    }
    }
    catch (Exception e)
    {
    System.out.println(e.getMessage());
    e.printStackTrace();
    }
    return nom;
    }

    private String NomDocument;
    private String DescriptionDocument;
    private String LogoEntreprise;
    public void setNomDocument(String NomDocument)
    {
    this.NomDocument=NomDocument;
    }
    public String getNomDocument()
    {
    return NomDocument;
    }
    public void setDescriptionDocument(String DescriptionDocument)
    {
    this.DescriptionDocument=DescriptionDocument;
    }
    public String getDescriptionDocument()
    {
    return DescriptionDocument;
    }
    public void setLogoEntreprise(String LogoEntreprise)
    {
    this.LogoEntreprise=LogoEntreprise;
    }
    public String getLogoEntreprise()
    {
    return LogoEntreprise;
    }
    public String execute()
    {
    String a;
    Acceuil ac= new Acceuil();
    a=ac.connexion();
    ac.setNomDocument(a);
    return SUCCESS;
    }
    }
    la vue Acceuil.JSP
    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>

    <html>
    <head>
    <title><s:text name="Page d'Acceuil"/></title>
    </head>

    <body>

    <h1>TEST DE LA PAGE ACCEUIL</h1>
    <br>
    <s:bean name="java.util.Date" var="today"/> Today (original format): <s:property value="#today"/>
    <br>
    <br>
    <br>
    <br>
    <br>

    <h1>
    on dit: <br>
    Salut<s:property value="NomDocument"/>
    </h1>

    </body>
    </html>
    merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Par défaut
    Bonjour,

    Je dirais à première vue qu'il y a une erreur de syntaxe. Il faut suivre les convention d'écriture des JavaBeans. Pour résoudre le problème, je pense que <s:property value="nomDocument"/> fonctionnerait.

    Pour l'écriture des JavaBeans essaye de les écrire suivant le modèle ci-dessous, en respectant les majuscules/minuscules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      private Integer result;
     
      public Integer getResult() {
        return result;
      }
     
      public void setResult(Integer result) {
        this.result = result;
      }
    Cordialement,

    Stac

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Par défaut
    Bonjour,

    C'est le même problème.

    J'ai fait même des SOP pour afficher le contenu de nomDocument au niveau de l'action avec l'ajout d'un main et l'execution simple en tant que une page java.
    ça m'affiche ce que je veux
    Mais qd j'nelève le main et j'affecte le résultat de la requête à la varaible nomDocument dans la méthode execute()
    la vue JSP n'affiche pas le contenu désiré.

    Je pense mon problème s'articule sur la récupération de la pge jsp de nomDocument à partir de la méthode execute

    Que pensez vous.

    Je vous remercie infiniment et s'il vous plaît si vous avez d'autre d'idées veuillez me les envoyer car je suis vraiment bloqué et si pressé.

    Merci encore une fois pour votre collaboration

    Acceuil.java
    package example;
    import com.opensymphony.xwork2.ActionSupport;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    public class Acceuil extends ActionSupport
    {
    public static String titre;
    public void connexion ()
    {
    //String nom="";
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    String connectionString= null;
    try
    {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    try
    {
    connectionString ="jdbc:sqlserver://CSS;database=Bilan Prospectif;user=wael;password=09111985";}
    catch (Exception e)
    {
    System.out.println(e.getMessage());
    e.printStackTrace();
    }
    conn = DriverManager.getConnection(connectionString);
    stmt = conn.createStatement();
    rs = stmt.executeQuery("SELECT DESIGNATION_CAPITAL FROM CAPITAL where ID_CAPITAL=11");
    while (rs.next())
    {
    titre=(rs.getString("DESIGNATION_CAPITAL"));

    }
    }
    catch (Exception e)
    {
    System.out.println(e.getMessage());
    e.printStackTrace();
    }

    }
    public static final String des=titre;
    private String nomDocument;
    private String descriptionDocument;
    private String logoEntreprise;
    public void setNomDocument(String nomDocument)
    {
    this.nomDocument=nomDocument;
    }
    public String getNomDocument()
    {
    return nomDocument;
    }
    public void setDescriptionDocument(String descriptionDocument)
    {
    this.descriptionDocument=descriptionDocument;
    }
    public String getDescriptionDocument()
    {
    return descriptionDocument;
    }
    public void setLogoEntreprise(String logoEntreprise)
    {
    this.logoEntreprise=logoEntreprise;
    }
    public String getLogoEntreprise()
    {
    return logoEntreprise;
    }
    public String execute() throws Exception
    {
    Acceuil a=new Acceuil();
    a.connexion();
    a.setNomDocument(titre);
    a.getNomDocument();
    return SUCCESS;
    }
    }
    Acceuil.jsp
    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
    <body>
    <h1 align="right">
    c'est <s:property value="nomDocument"/>
    </h1>
    </body>
    </html>

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Par défaut
    A vrai dire, je ne comprends pas cette action Accueil.java. En effet, dans le execute() vous instanciez un new Accueil() puis faites des set la dessus. OGNL ne trouvera pas les valeurs demandées en haut de la ValueStack.

    Struts 2 se charge de l'instanciation des Action pour chaque requête.

    Je vous conseille donc la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public String execute() throws Exception {
      this.connexion();
      this.setNomDocument(titre);
      return SUCCESS;
    }
    Cordialement,

    Stac

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Par défaut
    Salut,

    On a commencé de plus en plus à bien localiser le truc .
    J'ai essayé la méthode execute que vous m'aves proposée mais ça n'affiche rien encore.

    Le seul cas ou se fait l'affichage c'est lorsque je déclare
    private String nomDocument="Rapport";

    il m'affiche en jsp Rapport mais quand j'affecte avec set ça ne fonctionne pas.

    Vraiment ça deviendra de plus en plus stressant.

    S'il vous plaît vous ne pouvez pas m'aider à trouver la solution??

    Merci vous êtes trop gentil

    Cordiallement

    painouch21

  6. #6
    Membre chevronné Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Par défaut
    Quelle est la valeur de la variable titre au moment de l'affectation dans la méthode setNomDocument()?

    Est ce qu'elle ne serait pas null?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Par défaut
    Salut,


    J'ai fait un SystemOutPrint et elle contient la chaine retournée par la requête SQL

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    Slt,
    C'est normal que "titre" ne s'affiche pas.
    La valeur de "titre" est null au départ et la méthode execute ne peu être appelé que lors d'une action struts.
    Si tu veux afficher ton "titre" essaie ça:
    1) modifie ta classe pour hériter de l'interface preparable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Acceuil extends ActionSupport Implement Preparable
    2) Ajoute la méthode prepare dans ta classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void prepare(){
    this.connexion();
    this.setNomDocument(titre);
    }
    3) Croise les doigts et compte jusqu'à 3 avant de lancer. Normalement ça doit marcher.

Discussions similaires

  1. Problème d'affichage avec IE
    Par sheepk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/11/2005, 13h00
  2. Réponses: 6
    Dernier message: 19/05/2005, 11h06
  3. problème d'affichage avec printf
    Par sorari dans le forum C++
    Réponses: 12
    Dernier message: 08/03/2005, 18h30
  4. Réponses: 6
    Dernier message: 19/10/2004, 13h46
  5. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 16h59

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