BOnjour,

Je viens de me rendre compte que je suis incapable de récupérer les valeurs d'un post d'un selectOneMenu.

Si j'utilise la méthode processValueChange avec submit(); et le binding cela fonctionne ce qui est étrange c'est que dans un formulaire simple. j'ai toujours comme résultat la valeur nulle.


Je m'explique.
j'ai la méthode recupAction pour récupérer la valeur, mais rien ni fait, je vois les phaseId passer mais aucune valeur de passer en submit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
public void recupAction(ValueChangeEvent event){
        if(event.getNewValue() != null){
            System.out.println("event "+ event.getNewValue().toString());
        }else{
            System.out.println(" event valeur nulle");
        }
    }
j'utilise tomahawk1.1.6 facelets et l'implémentation de sun.

le template

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
 
<div xmlns="http://www.w3.org/1999/xhtml"
     xmlns:ui="http://java.sun.com/jsf/facelets"
     xmlns:h="http://java.sun.com/jsf/html"
     xmlns:c="http://java.sun.com/jsf/core"
     xmlns:jstl="http://java.sun.com/jstl/core"
     xmlns:f="http://java.sun.com/jsf/core">
     <h:outputText value="Ajout d'un Bloc"/>
     <c:subview>
         <h:form id="test">
             <h:selectOneMenu id="f_select"
                 binding="#{EditionRole.boiteselection}"
                 valueChangeListener="#{EditionRole.recupAction}"
                 value="#{EditionRole.selection}"
                 onchange="submit();">
                 <c:selectItem itemValue="0" itemLabel="Essai"/>
                 <c:selectItem itemValue="1" itemLabel="Essai1"/>
 
                 </h:selectOneMenu>
             <h:commandButton value="Envoyer" actionListener="#{EditionRole.recuperation}"/>
         </h:form>
     </c:subview>
</div>
le commandButton est la pour essayé de récupérer la valeur sans le submit et le recupAction ... mais la aussi rien a faire.

J'avoue que je suis perdu

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
 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
package geode.ihm.jsf.template;
 
import javax.faces.component.UISelectMany;
import javax.faces.component.UISelectOne;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.event.ValueChangeListener;
 
/**
 *
 * @author men
 */
public class EditionRole implements ValueChangeListener{
    private UISelectOne boiteselection;
    private String selection;
 
 
    public UISelectOne getBoiteselection() {
        return boiteselection;
    }
 
    public void setBoiteselection(UISelectOne boiteselection) {
        this.boiteselection = boiteselection;
    }
    public void recupAction(ValueChangeEvent event){
        if(event.getNewValue() != null){
            System.out.println("event "+ event.getNewValue().toString());
        }else{
            System.out.println(" event valeur nulle");
        }
    }
 
    public String getSelection() {
        System.out.println("getSelection " + selection);
        return selection;
    }
 
    public void setSelection(String selection) {
        System.out.println("setSelection "+ selection);
        this.selection = selection;
    }
    public void recuperation(ActionEvent event){
        System.out.println("event bouton "+event.getComponent() +" phaseId" + event.getPhaseId());
        System.out.println(selection);
        boiteselection.setValue("Essai1");
    }
 
    public void processValueChange(ValueChangeEvent event) throws AbortProcessingException {
        if(event.getNewValue() != null){
            System.out.println("event "+ event.getNewValue().toString());
        }else{
            System.out.println(" event valeur nulle");
        }
    }
}
En fait même quand j'utilise pas les artifices des listeners, si j'enlève les valueChangeEvent etc .... comment récupérer les valeurs du post de façon simple ou détourné comme en PHP $_POST[] ????

Je suis d'autant plus dérouté que le reste fonctionne bien, mais cette partie est souvent source de tracas ...

olivier