Converter et selectOneMenu
Bonjour,
J'ai un petit soucis de converter avec un composant selectOneMenu, je ne comprends pas, car je pense que tout est correct (evidement ca ne l'est pas si je choppe une erreur) mais apparement une erreur m'échappe.
Le code de mon selectOneMenu
Code:
1 2
| <h:selectOneMenu id="statusForm" converter="StatusConverter" value="#{taskBean.task.status[key]}"
<f:selectItems value="#{selectList.statusTask2}" /></h:selectOneMenu> |
{taskBean.task.status[key]} correspond à une map <Quarter, TaskStatus>, donc il est nécessaire de renvoyer un type "TaskStatus" (key reprensente "Quarter").
Voici le converter:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| /**
* @see javax.faces.convert.Converter#getAsString(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
*/
public String getAsString(FacesContext facesContext, UIComponent uIComponent, Object obj) {
if (obj == null) {
return null;
}
if (obj.getClass().equals(TaskStatus.class)) {
TaskStatus status = (TaskStatus) obj;
return String.valueOf(status.getId());
}
return null;
}
/**
* @see javax.faces.convert.Converter#getAsObject(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.String)
*/
public Object getAsObject(FacesContext facesContext, UIComponent uIComponent, String str) {
if (str == null) {
return null;
}
return ServiceUtil.getTaskStatusService().getTaskStatus(Long.valueOf(str));
} |
ServiceUtil.getTaskStatusService().getTaskStatus(Long.valueOf(str)) va chercher dans ma db l'enregistrement correspondant au numéro envoyé.
Voici le code qui rempli mes items:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| /**
* Return the task status list.
*
* @return statusTask
*/
public List<SelectItem> getStatusTask2() {
List<TaskStatus> taskStatus = ServiceUtil.getTaskStatusService().findListTaskStatus();
List<SelectItem> statusItems = new ArrayList<SelectItem>();
for (TaskStatus tStatus : taskStatus) {
String tmp = tStatus.getStatusFr();
statusItems.add(new SelectItem(tStatus, tmp));
}
return statusItems;
} |
Je ne vois pas trop ou ca coince, si quelqu'un a une petite idée ce serait vrmnt génial!
Mercii d'avance