Bonjour,

J'utilise Primefaces et je voudrais pouvoir utiliser un SelectOneMenu dans un Bean. Voici les objects que j'utilise :

doc.xhtml
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>
	<p:panel header="Agrémenter une tension" toggleable="true"
		collapsed="true" toggleSpeed="0">
 
		<h:panelGrid columns="2" style="width:100%;">
 
			<h:outputLabel value="Tension :" />
			<p:selectOneMenu value="#{editVoltageBean.voltage}"
				style="width:250px;" converter="#{org.converter.VoltageConverter}">
				<f:selectItem itemLabel="Select One" itemValue="" />
				<f:selectItems value="#{editVoltageBean.voltages}" var="voltage"
					itemLabel="#{voltage.displayed}" itemValue="#{voltage}" />
			</p:selectOneMenu>
 
			<p:commandButton value="Effacer" type="reset" />
			<p:commandButton id="editButton" value="Editer"
				actionListener="#{editVoltageBean.edit}" update="voltageList" />
		</h:panelGrid>
 
	</p:panel>
</h:form>
EditVoltageBean.java
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
 
package org.bean;
 
import java.util.List;
 
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
 
import org.objects.Torque;
import org.objects.TypeOfVoltageValue;
import org.objects.Voltage;
import org.objects.VoltageValue;
import org.primefaces.context.RequestContext;
 
@ManagedBean
public class EditVoltageBean {
	private Voltage voltage;
	private TypeOfVoltageValue typeOfVoltageValue;
	private Torque torque;
	private float frequency;
	private float value;
	private List<Voltage> voltages;
	private List<TypeOfVoltageValue> typeOfVoltageValues;
	private List<Torque> torques;
 
	public Torque getTorque() {
		return torque;
	}
 
	public void setTorque(Torque torque) {
		this.torque = torque;
	}
 
	public List<Torque> getTorques() {
		torques = Torque.getAll();
		return torques;
	}
 
	public TypeOfVoltageValue getTypeOfVoltageValue() {
		return typeOfVoltageValue;
	}
 
	public void setTypeOfVoltageValue(TypeOfVoltageValue typeOfVoltageValue) {
		this.typeOfVoltageValue = typeOfVoltageValue;
	}
 
	public List<TypeOfVoltageValue> getTypeOfVoltageValues() {
		typeOfVoltageValues = TypeOfVoltageValue.getAll();
		return typeOfVoltageValues;
	}
 
	public List<Voltage> getVoltages() {
		voltages = Voltage.getAll();
		return this.voltages;
	}
 
	public Voltage getVoltage() {
		return voltage;
	}
 
	public void setVoltage(Voltage voltage) {
		this.voltage = voltage;
	}
 
	public float getFrequency() {
		return frequency;
	}
 
	public void setFrequency(float frequency) {
		this.frequency = frequency;
	}
 
	public float getValue() {
		return value;
	}
 
	public void setValue(float value) {
		this.value = value;
	}
 
	public void edit(ActionEvent actionEvent) {
		System.out.println("EditVoltageBean.edit");
		RequestContext context = RequestContext.getCurrentInstance();
		FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_FATAL,
				"Erreur lors de l'édition.", "");
		boolean creation = true;
 
		if (voltage == null) {
			creation = false;
			msg = new FacesMessage(FacesMessage.SEVERITY_FATAL,
					"Vous devez selectionner une tension.", "");
		} else if (typeOfVoltageValue == null) {
			creation = false;
			msg = new FacesMessage(FacesMessage.SEVERITY_FATAL,
					"Vous devez selectionner un type.", "");
		} else if (torque == null) {
			creation = false;
			msg = new FacesMessage(FacesMessage.SEVERITY_FATAL,
					"Vous devez selectionner un couple.", "");
		}
 
		System.out.println("EditVoltageBean.edit : "+creation);
 
		if (creation
				&& VoltageValue.create(voltage, typeOfVoltageValue, torque,
						frequency, value)) {
			msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
					"La tension a été éditée.", "");
		}
 
		FacesContext.getCurrentInstance().addMessage(null, msg);
	}
}
VoltageConverter.java
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
 
package org.converter;
 
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
 
import org.objects.Voltage;
 
public class VoltageConverter implements Converter {
 
	@Override
	public Object getAsObject(FacesContext context, UIComponent component,
			String value) {
		System.out.println("VoltageConverter.getAsObject");
		return Voltage.getByCode(Integer.decode(value));
	}
 
	@Override
	public String getAsString(FacesContext context, UIComponent component,
			Object value) {
		System.out.println("VoltageConverter.getAsString");
		return "" + ((Voltage) value).getCode();
	}
 
}
Et le problème c'est que quand je spécifie un élément dans la selection, je n'ai pas de trace d'execution (=marche pô !) et quand je n'en séléctionne pas, j'ai une trace...

Vous auriez une idée ?