Bonjour a tous,
Comme vous vous en doutez, j'ai un souci avec JSF.
J'utilise Hibernate et JPA pour la persistence de données. J'ai un formulaire qui permet de remplir un objet "Equipe".
Une équipe se compose d'un nom et d'un coach. J'ai 3 coach en bdd.
l'affichage du formulaire se passe bien j'ai bien un champs select normal :
<option value="1">Nom du coach</option>
J'ai un convertor qui permet de recuperer l'objet correspondant en base à partir de l'id
Mon convertor est OK.
Cependant lorsque je veux envoyer le formulaire, j'ai une erreur au niveau de la validation
Erreur de validation: Valeur not valid
J'ai alors tenté de faire un validator moi même mais l'objet qui y est passé en paramètre est bon ....
Et la méthode equals de mon objet Coach est appelé, mais l'objet passé en paramètre est a null. Je ne comprends pas pourquoi mais c'est pourtant là, la source d'erreur.
J'ai tenté beaucoup de chose mais sans trouver mon bonheur.
Avez-vous une idée ?
Merci d'avance !!
Ma jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<f:view>
<h:form>
<h:panelGrid border="0" columns="2" cellpadding="5">
<h:outputText value="Name" />
<h:inputText id="firstName" value="#{teamcontroller.newObject.name}" />
<h:outputText value="Coach" />
<h:selectOneMenu id="selectOneCoach" value="#{teamcontroller.newObject.coach}" converter="CoachConverter">
<h:messages/>
<f:selectItems value="#{teamcontroller.allCoachs}" />
</h:selectOneMenu>
<h:commandButton value="Ajouter" action="#{teamcontroller.createObject}" />
</h:panelGrid>
</h:form>
</f:view> |
Une partie de mon controller
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
|
protected Team myEditObject;
protected Team newObject;
private CoachDao coachDao;
private Collection<SelectItem> selectItems;
public TeamController() {
JpaDao<Team, Integer> dao = new TeamDao();
myEditObject = new Team();
newObject = new Team();
init(dao, newObject, myEditObject);
coachDao = new CoachDao();
}
public Collection<SelectItem> getAllCoachs(){
List<Coach> liste = coachDao.findAll();
selectItems = new ArrayList<SelectItem>();
for(Coach co : liste){
SelectItem s = new SelectItem(co.getId(), co.getName());
selectItems.add(s);
}
return selectItems;
}
public void setAllCoachs(Collection<SelectItem> coachsItem) {
this.selectItems = coachsItem;
} |
Partager