[Primefaces] SelectOneMenu et problème de Bean
Bonjour,
J'utilise Primefaces et je voudrais pouvoir utiliser un SelectOneMenu dans un Bean. Voici les objects que j'utilise :
doc.xhtml
Code:
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:
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:
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 ?