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 :

Problème de rafraîchissement d'écran avec h:selectBooleanCheckbox dans un h:dataTable


Sujet :

JSF Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Problème de rafraîchissement d'écran avec h:selectBooleanCheckbox dans un h:dataTable
    Bonjour.
    Je débute en JSF, et je rencontre un problème de rafraîchissement d'écran...

    A l'exécution, le code suivant se comporte d'une manière que je ne m'explique pas... Je voudrais, quand le statut d'un "Todo" change (select/unselect d'un checkbox), que la ligne soit barrée (style lineThrough) ou pas, selon que la case est cochée ou pas...

    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
     
    <h:form id="todoForm">
    	<h:dataTable id="todos"
    		columnClasses="columnDesc, columnStatus"
    		styleClass="tableScrollLayout"
    		value="#{TodoListBean.todoList.dataModel}" var="todo">
    ...
    		<h:column id="descCol">
    			<h:outputText value="#{todo.todoDescription}"
    				styleClass="#{todo.statusTreated ? 'lineThrough' : ''} textLayout"
    				id="desc" />
    		</h:column>
     
    		<h:column id="statusCol">
    			<h:selectBooleanCheckbox value="#{todo.statusTreated}" onchange="submit()" >
    			</h:selectBooleanCheckbox>
    		</h:column>
     
    	</h:dataTable>
    ...
    </h:form>
    ...
    Mon problème est que la page n'est rafraîchie qu'une fois sur deux...
    J'ai une liste de 6 objets 'TodoListItem', quand j'en sélectionne un (le premier), la case est cochée mais rien ne se passe.

    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
    public class TodoListItem {
     
    	private String todoDescription = null;	// short description (title of the todo)
     
    	private Status status = null;
     
     
    	/**
             * @return
             */
    	public String getTodoDescription() {
    		return todoDescription;
    	}
     
    	/**
             * @param string
             */
    	public void setTodoDescription(String string) {
    		todoDescription = string;
    	}
     
    	/**
             * 
             * @param treated: true if the status is 'treated', false if it is 'not treated'
             */
    	public void setStatusTreated(boolean treated) {
     
    		Status status = new Status();
    		if (treated) {
    			System.out.println(
    				"************ set code to Treated (set) **************");
    			status.setCode(ToDoStatusCode.TREATED);
    		} else {
    			System.out.println(
    				"************ set code to Not_Treated (set) **************");
    			status.setCode(ToDoStatusCode.NOT_TREATED);
    		}
    		status.setCodeId(ToDoStatusCode.MY_NAME);
    		this.status = status;
    	}
     
    	public boolean isStatusTreated() {
    		return ToDoStatusCode.TREATED.equals(this.status.getCode());
    	}
    }
    Dans un second temps, j'en sélectionne un autre (le deuxième), la première ligne passe en lineThrough et la seconde est décochée.
    Je coche la 6ème: rien. Je coche la 4ème: la sixième est barrée et la 4ème décochée.
    En gros, c'est comme si le submit n'était fait qu'une fois sur deux...

    Quelqu'un a une idée pour me remettre sur les rails?

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    A tout hasard, essaie d'utiliser l'événement onclick plutôt que onchange pour ton checkbox...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Ayant trouvé un autre post parlant de mise à jour 1 x / 2, j'ai ajouté un immediate="true" à mon selectBooleanCheckbox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:selectBooleanCheckbox value="#{todo.statusTreated}" onclick="submit()" immediate="true">
    La mise à jour se fait bien, maintenant.

    Cependant, je voudrais éviter que tout le formulaire soit reposté à chaque fois... En fait, je voudrais passer par une requête ajax qui ne rafraîchisse que le tableau...
    J'ai donc essayé d'utiliser certaines balises a4j (a4j:support et a4j:ajaxListener)., mais il semble qu'il y ait un problème avec les IDs des objets retournés (je me demande si a4j n'a pas un problème avec les rows...).

Discussions similaires

  1. problème de résolutin d'écran avec les additions
    Par ikuzar dans le forum VirtualBox
    Réponses: 2
    Dernier message: 06/06/2012, 23h49
  2. probléme de lumiére d'écran avec samsung R530
    Par unix27 dans le forum Windows XP
    Réponses: 11
    Dernier message: 02/12/2011, 00h18
  3. Problème de capture d'écran avec les media players
    Par mouhab dans le forum Windows XP
    Réponses: 7
    Dernier message: 01/01/2011, 20h50
  4. [Turbo Pascal] [XP] Problème de décalage d'écran avec TP7 et programme sous DOS
    Par EpiTouille dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 20/12/2010, 21h15
  5. Réponses: 1
    Dernier message: 11/05/2006, 15h17

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