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 :

comportement etrange a4j


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 112
    Par défaut comportement etrange a4j
    bonjour

    voici la situation
    j'ai dans un une page un bouton qui devrait réagir sur onclick mais qui ne le fait pas. très étrangement lorsqu'on click sur le composant c'est submit qui est lancer.

    lorsqu'il y a un seul niveau d'imbrication ça marche mais pas au delà.

    sur le formulaire de la page principal il y a un onsubmit=cover() qui fait apparaitre un span pour "blanchir" la page et empêcher que l'on rerereclick.
    donc à la fin du cycle la page est réaffichée, fin de l'affaire.
    sur les appels ajax on a une methode uncovert qui est appellée comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	<h:form id="form" onsubmit="cover(); return true;">
    		<jsp:include page="main.jsp" />
     
    blabla 
    <a4j:status onstop="uncover()"/>
    </h:form>
    la page main.jsp inclut une main_menu.jsp et c'est là que cela ne marche pas
    et qui permet de retirer le span.
    donc ma question y a t-il une raison pour que cela ne marche pas au second niveau d'include des pages.

    aussi j'ai testé avec <jsp:include et <%@ include cela ne semble pas faire de différence.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Montre nous ton bouton qui marche par. Aussi, a4j:log en bas de page, çà peut être utile au débuggage

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 112
    Par défaut
    voici le code du bouton qui lance le submit situé dans la page incluse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <h:selectOneRadio value="#{rrAction.showObjectLogs}" required="#{false}"
    	id="log_entry_filter">
    	<f:selectItem itemLabel="No" itemValue="false" />
    	<f:selectItem itemLabel="Yes" itemValue="true" />
    	<a4j:support event="onclick" reRender="eventLogDataTable" status="statusField"/>
    </h:selectOneRadio>
    et voici le code du bouton qui marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <h:selectOneRadio value="#{rrAction.project.consortium}"
    							required="#{false}" id="fld_c1"
    							disabled="#{current.formMode=='VIEW' || !security.canEdit.TAB_1_1}">
    							<f:selectItem itemLabel="No" itemValue="false" />
    							<f:selectItem itemLabel="Yes" itemValue="true" />
    							<a4j:support event="onclick" ajaxSingle="true"
    								eventsQueue="queue" reRender="cons_panel" />
    						</h:selectOneRadio>
    merci du coup de main

  4. #4
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    essaies d'ajouter une subview dans ton include.

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 112
    Par défaut
    c'est déjà dans un subview
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <f:subview id="sv06"
    			rendered="#{rrAction.processInformation.tabValue eq 'system_log'}">
    			<jsp:include page="system_log.jsp" />
    		</f:subview>

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a4j:log popup="false" level="ALL" style="width: 800px; height: 300px;"></a4j:log>
    et dit nous ce qui se passe là dedans quand tu clique sur ton radio (au fait, faut pas parler de bouton si c'est pas des boutons, je m'attendais à trouver des commandButton moi, pas des selectOneRadio ^^)

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 112
    Par défaut
    bon je commence à comprendre comment cela marche, mais je n'en suis pas tout à fais sur.
    en fait le ajaxSingle="true" résout le problème mais je ne suis pas sur de comprendre ce que cela fait exactement
    le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <h:selectOneRadio value="#{rrAction.showObjectLogs}" required="#{false}"
    	id="log_entry_filter">
    	<f:selectItem itemLabel="No" itemValue="false" />
    	<f:selectItem itemLabel="Yes" itemValue="true" />
    	<a4j:support event="onclick" reRender="eventLogDataTable" status="statusField"/>
    </h:selectOneRadio>
    appel le reRender qui prend la valeur showObjectLogs qui est un bool.
    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
    <rich:dataTable id="eventLogDataTable"
    	value="#{rrAction.entryLogEntries}" var="row"
    	columnClasses="syslogTime,syslogBy,syslogType" cellpadding="0"
    	cellspacing="0" border="0" >
    	<rich:column>
    		<f:facet name="header">
    			<h:outputText value="Date/time" />
    		</f:facet>
    		<t:outputText value="#{row.actionTime}">
    			<f:convertDateTime type="date" timeZone="#{current.timeZoneUser}"
    				pattern="yyyy-MM-dd" />
    		</t:outputText>
    		<h:outputText value="&nbsp;" escape="false" />
    		<t:outputText value="#{row.actionTime}">
    			<f:convertDateTime type="time" timeZone="#{current.timeZoneUser}"
    				pattern="hh:mm:ss" />
    		</t:outputText>
    		<h:outputText value="&nbsp;" escape="false" />
    		<h:outputText value="#{current.timeZoneUserCode}" />
    	</rich:column>
    	<rich:column>
    		<f:facet name="header">
    			<h:outputText value="By" />
    		</f:facet>
    		<t:outputText value="#{row.login}" />
    		<t:outputText rendered="#{row.login!=row.realLogin}"
    			value=" (by #{row.realLogin})" />
    	</rich:column>
    	<rich:column>
    		<f:facet name="header">
    			<h:outputText value=" Subject  -  Object  - Type" />
    		</f:facet>
    		<h:outputText escape="false" rendered="#{!row.isTransactionLog}"
    			value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" />
    		<t:outputText rendered="#{!row.isTransactionLog}"
    			value="#{row.subject} - #{row.relatedClassname} - #{row.actionType}" />
    		<t:outputText rendered="#{row.isTransactionLog}"
    			value="#{row.subject}" />
    	</rich:column>
     
    </rich:dataTable>
    qui affiche l'un ou l'autre des logs suivant le bool.
    donc si je comprend quelque chose l'ajax est envoyé mais il lance aussi un submit (car la methode cover est appelée) et ensuite...

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par champion Voir le message
    bon je commence à comprendre comment cela marche, mais je n'en suis pas tout à fais sur.
    en fait le ajaxSingle="true" résout le problème mais je ne suis pas sur de comprendre ce que cela fait exactement



    donc si je comprend quelque chose l'ajax est envoyé mais il lance aussi un submit (car la methode cover est appelée) et ensuite...
    le ajaxSingle, dit au composant de n'envoyer que ce composant dans la requete, çà limite la taille du submit, mais çà peut aussi poser des problème si tes beans sont requestscope

    Ajax4JSF respecte les regles style onsubmit, etc associées à ton form, la seul chose qui change, c'est que le submit est en arrière plan et qu'il permet de redessiner partiellement le formulaire.

    par contre, évite le "return true" dans le onsubmit Si ma mémoire est bonne, on ne fait un return que si on veux arrêter le process de soumission JSF. (exemple: formulaire invalide)
    Enfin, après soumission de la requête et réponse du server, le code de ton onstop est appelé (vérifie aussi dans ta console javascript que t'as pas une erreur si çà "marche pas" )

Discussions similaires

  1. fichier .jnlp, comportement etrange
    Par orelero dans le forum JWS
    Réponses: 7
    Dernier message: 24/05/2008, 06h48
  2. Comportement étrange d' apt-get install
    Par Captain_futur dans le forum Debian
    Réponses: 2
    Dernier message: 06/04/2006, 22h57
  3. FindCLose Comportement etrange
    Par Aos dans le forum Langage
    Réponses: 6
    Dernier message: 24/01/2006, 14h20
  4. [LG]repeat/until comportement etrange
    Par scifire dans le forum Langage
    Réponses: 11
    Dernier message: 25/03/2005, 21h56
  5. [langage] Comportement étrange d'une variable
    Par Spaz dans le forum Langage
    Réponses: 6
    Dernier message: 23/04/2004, 11h29

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