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 :

[RichFaces] Modal Panel , gestion des erreurs


Sujet :

JSF Java

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Par défaut
    Voici le code complet de ma jsp :


    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    <%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
    <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <f:view>
    	<html>
    	<head>
    	<title>Save a new book</title>
     
    	</head>
    	<body>
    	<rich:tabPanel>
    		<rich:tab label="Save Book">
    			<h:form id="myForm">
    				<rich:modalPanel id="mp" width="350" height="100"
    					showWhenRendered="#{facesContext.maximumSeverity!=null}">
    					<f:facet name="header">
    						<h:panelGroup>
    							<h:outputText value="Modal Panel"></h:outputText>
    						</h:panelGroup>
    					</f:facet>
    					<f:facet name="controls">
    						<h:panelGroup>
    							<h:graphicImage value="/images/modal/close.png"
    								style="cursor:pointer" id="hidelink" />
    							<rich:componentControl for="mp" attachTo="hidelink"
    								operation="hide" event="onclick" />
    						</h:panelGroup>
    					</f:facet>
    					<rich:messages />
    				</rich:modalPanel>
    				<rich:panel style="width=50%">
    					<f:facet name="header">
    						<h:outputText value="Save a new book"></h:outputText>
    					</f:facet>
    					<h:panelGrid columns="2">
    						<h:outputText value="ISBN:" />
    						<h:inputText id="isbn" required="true"
    							value="#{manageBook.book.isbn}">
    						</h:inputText>
    						<h:outputText value="Title:" />
    						<h:inputText id="title" value="#{manageBook.book.titre}">
    						</h:inputText>
    						<h:outputText value="Author:" />
    						<h:inputText id="auteur" value="#{manageBook.book.auteur}">
    						</h:inputText>
    						<h:outputText value="Price:" />
    						<h:inputText id="prix" value="#{manageBook.book.prix}">
    						</h:inputText>
    						<a4j:commandButton value="Validate"
    							action="#{manageBook.saveBook}"
    							oncomplete="Richfaces.showModalPanel('myForm:mp');" />
    					</h:panelGrid>
    					<rich:comboBox defaultLabel="Enter some value">
    						<f:selectItem itemValue="suggestion 1" />
    						<f:selectItem itemValue="suggestion 2" />
    						<f:selectItem itemValue="suggestion 3" />
    						<f:selectItem itemValue="suggestion 4" />
    						<f:selectItem itemValue="suggestion 5" />
    					</rich:comboBox>
    				</rich:panel>
    			</h:form>
    		</rich:tab>
    		<rich:tab label="Save User">
    		</rich:tab>
    		<rich:tab label="Third" disabled="true">
    		</rich:tab>
    	</rich:tabPanel>
    	</body>
    	</html>
    </f:view>

    Y'a surement une bétise quelque part, une form mal placée ou que sais-je que je vois pas.

    J'ai essayé une fonction qui me retourne si il y a des erreurs dans le FacesContext. Lorsque j'arrive dans ma méthode saveBook() (et que donc pas d'erreur avec le required=true) il m'indique qu'il n'y a aucune autre erreur dans le context.

  2. #22
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    le modalPanel il fa ut le mettre en dehors du formulaire, juste après le <body>
    par exemple.
    et le rich:message ajoute showDetails et showSummary..

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Par défaut
    J'ai bien mis mon modalPanel en dehors du form, après le body.

    J'ai rajouté le showSummary et le showDetail.

    Ce qui me donne lorsque je ne remplis pas le champs isbn : myForm:isbn: Erreur de validation: Valeur requise.myForm:isbn: Erreur de validation: Valeur requise.

    Mais lorsque je le rempli, comme toujours : une modalPanel vide

    Quoiqu'il arrive, dès que j'appuye sur le bouton validate, il affiche la modalPanel sans tenir compte du fait de la présence ou non de messages d'erreurs.

  4. #24
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    - quelle est ta version de richfaces?
    -ça donne quoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText value="#{facesContext.maximumSeverity}" />
    -tu peux utiliser un biding et faire une fonction dans ton bean vérifier s'il n'ya pas de message et retourner true ou false.

    - showWhenRendered="false" elle ne s'ouvre pas la popup ..j'espere..

    - essaye de mettre <h:commandButton/> au lieu de a4j avec un a4j:support sur l'evenement onclick..

  5. #25
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Par défaut


    Bon, après ton messages, je me suis dis "si ça marche pas, je laisse tomber"

    Pour répondre à tes questions, je suis sur RichFaces 3.2.2 (et c'est peut-être ça le problème, après je vais essayer avec 3.2.0)

    Concernant le output du maximumSeverity, figure toi que ça n'affichait rien :s

    Le binding avec une fonction, j'avais déjà utilisé ce procédé, et ça n'avait rien donné. J'ai donc réessayé avec ma modal en dehors de mon formulaire et comme tu peux t'en douter...ça marchait toujours pas.

    Pire !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    - showWhenRendered="false" elle ne s'ouvre pas la popup ..j'espere..
    Et bien non ! Elle s'ouvrait quand même !! Donc ta dernière solution me semblait logique : c'est le a4j:commandButton qui merde un peu. Je ne connaissais pas le a4j:support (je débute avec richfaces), mais j'ai vite changé mon bouton en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:commandButton value="Validate" action="#{manageBook.saveBook}">
    						<a4j:support oncomplete="Richfaces.showModalPanel('mp');"/>
    						</h:commandButton>
    Hop, un restart du serveur et que vois-je :

    mon output maximumSeverity marche (bizarre car après cette 1er modification j'ai bien tout rechargé pour être sur). Mais en plus...mon modalPanel réagit correctement

    Ce fut fastidieux

    En tout cas, un grand merci à toi, je n'aurais jamais pensé a utiliser le a4j:support. Je vais quand même sauvegarder cette page, et essayer avec les RichFaces 3.2.0 pour voir. J'éditerai ce message pour le résultat avec cette version.


    Edit :

    Test avec version 3.2.1 , 3.2.0 et 3.1.6 -> même bug.

    Quelle est ta version de RichFace que j'essaye? (pour voir si c'est un bug de version, ou alors chez moi (et il est très bien caché xD)

  6. #26
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    je suis avec la 3.2.2.GA, la dernière release et je n'ai pas constaté de régression du modalPanel.

    il faut faire attention avec le <a4j:commandButton/> je ne sais pas si tu fais la navigation avec, mais il est censé faire que la mise à jour partiel ou total de la page..
    la navigation ne se fait pas avec les composants de control a4j.

    tu peux enfin remettre le post

  7. #27
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Par défaut
    Je ferai attention les prochaines fois en tout cas ^^

    Allez hop, résolu

  8. #28
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 40
    Par défaut
    Pour ajouter une pierre à l'édifice, j'ai eu EXACTEMENT le même soucis ce matin !
    Sauf que moi, c'étai sur un a4j:commandLink qui commandait une suppresion. Je l'ai remplacé par un h:commandlink et son a4j:support et ça fonctionne.

    Merci

  9. #29
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 143
    Par défaut
    Dans mon appli, j'ai des modal panel avec des formulaires où il y a du contrôle de surface, des champs obligatoires etc... Pour que les messages d'erreur s'affichent correctement, j'utilise un <h:commandButton /> pour la validation et la technique suggérée ci-dessous :

    Citation Envoyé par Sniper37 Voir le message
    tu peux utiliser le parametre showWhenRendered, pour des erreurs de validations ou de conversion:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    showWhenRendered="#{facesContext.maximumSeverity !=null}"
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <rich:messages/> ou <h:messages />
    dans le modalPanel
    Le souci est que dans certaines vues, j'inclus plusieurs modal panel et donc lorsque j'ai une erreur, cela affiche les autres modal panel inclus dans ma page, forcément, elles ont toutes la même condition - #{facesContext.maximumSeverity !=null}.

    J'ai donc ajouté un booléen pour chacune de ces modal afin d'avoir des conditions uniques, mais c'est lourd car il faut gérer n booléens, positionner les autres à false quand on ouvre une modal etc...

    Je cherche donc une meilleure solution pour bien rafraichir mon formulaire afin que les messages s'affichent sans fermer la modal. Il me semble avoir essayé un <a4j:commandButton /> et un reRender mais ça ne fonctionne pas...

    A vos idées. Merci !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [FB] Gestion des erreurs et application francophone
    Par Benjamin GAGNEUX dans le forum Installation
    Réponses: 10
    Dernier message: 20/05/2006, 14h54
  2. [struts][Datasource]Gestion des erreurs
    Par GreenJay dans le forum Struts 1
    Réponses: 8
    Dernier message: 15/09/2004, 16h51
  3. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  4. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 22h41

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