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 1 Java Discussion :

Internationalisation: Bean, validation et affichage d'un message d'erreur


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Par défaut Internationalisation: Bean, validation et affichage d'un message d'erreur
    Bonjour à tous,

    Nous importons des données à partir de fichiers CSV, données que nous validons aussitôt. Quand les données ne respectent pas les spécifications (donnée requise, valeur entière...), nous souhaiterions afficher un message (international) d'erreur par donnée.

    Concernant la validation de chaque bean, nous avons implémenté une method validate semblable à celle de la validation struts d'un formulaire. Le bean contient d'ailleurs un attribut ActionMessage que l'on tente d'afficher dans la JSP.

    Mes questions sont :
    - Avez vous déjà rencontrer ce genre de souci ? Si oui, comment vous en êtes vous sorti ?
    - Le détournement de l'utilisation ActionMessage est elle judicieuse pour ce cas de figure ? Si non, comment feriez-vous? Si oui, quelques conseils pour afficher les messages?

    Merci d'avance pour vos réponses

    Jean

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    As-tu fait comme indiqué dans la FAQ pour créer des ActionMessage et les afficher dans la jsp ?

  3. #3
    Membre confirmé
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Par défaut
    Désolé pour le delai de cette réponse. En solution à mon problème initiale, j'ai bidouillé mon propre affichage de msg.

    Toutefois je fais de nouveau face à un problème similaire. Dans mon code, je valide qu'une donnée (non cle primaire) n'existe pas encore dans une table.

    Qd c'est le cas, je dois afficher un message "international" basé sur deux éléments de mes fichiers de propriétés.

    Pour cela, j'ai codé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ActionMessage value = new ActionMessage("name");
    ActionMessage msg = new ActionMessage("errors.nonunique",value);
    errors.add(ActionMessages.GLOBAL_MESSAGE, msg);
    mais cela ne fonctionne pas comme je voudrais... le message suivant s'affiche:
    Erreur lors de la tentative d'enregistrement.
    Merci de corriger le(s) élélemt(s) suivant:
    name[] n'est pas unique.
    Merci d'avance

  4. #4
    Membre confirmé
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Par défaut
    Citation Envoyé par jdvacheron Voir le message
    Désolé pour le delai de cette réponse. En solution à mon problème initiale, j'ai bidouillé mon propre affichage de msg.
    Pour info, ma solution constiste à utiliser une liste de beans contenant une key et une valeur... C'est pas tres jojo, n'est ce pas...

    dans ma JSP, je visualise le contenu avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <c:if test="${ !entry.valid }">
      <c:forEach var="msg" items="${ entry.fmtMessages }">
        <nobr> <fmt:message key="${ msg.key }" bundle="${loc}">
        <c:if test="${msg.args != null}">
          <c:forEach var="arg" items="${ msg.args }">
            <fmt:param><fmt:message key="${ arg }" bundle="${loc}"></fmt:message></fmt:param>
          </c:forEach>
        </c:if>
        </fmt:message></nobr>
      </c:forEach>
    </c:if>

  5. #5
    Membre confirmé
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Par défaut
    Citation Envoyé par jdvacheron Voir le message
    Pour cela, j'ai codé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ActionMessage value = new ActionMessage("name");
    ActionMessage msg = new ActionMessage("errors.nonunique",value);
    errors.add(ActionMessages.GLOBAL_MESSAGE, msg);
    En fait, je ne sais pas comment ajouter un "paramètre" (ou argument?) dans un message. Quelqu'un a t'il une idée?

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <fmt:param><fmt:message key="${ arg }" bundle="${loc}"></fmt:message></fmt:param>
    en fait c'est l'inverse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <fmt:message key="${ arg }" bundle="${loc}"><fmt:param value="bonjour"></fmt:param></fmt:message>
    si dans ton fichier resources.properties tu as pour la clé ${arg} :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "${arg}"={0}, comment vas-tu?
    ça va afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bonjour, comment vas-tu?
    pour ce qui est de la construction des messages, tu peux aller ici, il y a un exemple de construction d'un message avec plusieurs paramètres : le constructeur que tu utilises n'est pas correct.

  7. #7
    Membre confirmé
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Par défaut
    Salut,

    je comprends bien ta réponse.

    le hic dans mon cas de figure, c'est la valeur de mon param vient elle aussi de mon fichier de proriété.

    En fait mon message se décompose en un corps et une valeur qui dépendent toute les deux des locales. Par ex:

    fichier de prop anglais :
    errors.required:{0} is required.
    rule:rule

    fichier de prop fr :
    errors.required:{0} est requis(e).
    rule:la règle

    Et je voudrais afficher les valeurs pour errors.required et rule, par exemple: rule is required.

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

Discussions similaires

  1. Affichage d'un message d'erreur en cas de validation non reussi
    Par javalhoussain dans le forum ASP.NET
    Réponses: 4
    Dernier message: 11/04/2011, 16h59
  2. [MySQL] Affichage d'un message d'erreur au lieu du contenu de ma base
    Par kanebody dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/12/2009, 19h57
  3. Réponses: 2
    Dernier message: 23/06/2008, 17h12
  4. Réponses: 4
    Dernier message: 26/02/2008, 14h12
  5. Supprimer l'affichage d'un message d'erreur
    Par delphineleclerc1 dans le forum Access
    Réponses: 2
    Dernier message: 23/02/2006, 09h14

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