Bonjour à tous,

Je débute avec JSF2 et j'ai un comportement que je ne comprends pas en utilisant une combobox.

Voici mon message d'erreur : • Erreur de conversion lors de la définition de la valeur 'be.templates.Template@84f68f' pour 'null Converter'.

Et mon code :

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
public class Template {
    private String name ;
    private String content ;
 
    public Template(String name, String content) {
        this.name = name;
        this.content = content;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getContent() {
        return content;
    }
 
    public void setContent(String content) {
        this.content = content;
    }
}
Mon bean
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
@ManagedBean(name = "TemplateBean")
@SessionScoped
public class TemplateBean implements Serializable{
    private String templateValueString;
    private Template templateValueTpl ;
    private Template[] templates ;
 
    public String getTemplateValueString() {
        return templateValueString;
    }
 
    public void setTemplateValueString(String templateValueString) {
        this.templateValueString = templateValueString;
    }
 
    public Template[] getTemplates() {
        Template[] templates = new Template[3] ;
        templates[0] = new Template("tpl1", "aaa") ;
        templates[1] = new Template("tpl2", "bbb") ;
        templates[2] = new Template("tpl3", "ccc") ;
        return templates;
    }
 
    public void setTemplates(Template[] templates) {
        this.templates = templates;
    }
 
    public void apply () {
        System.out.println (templateValueString) ;
        System.out.println (templateValueTpl) ;
    }
 
    public Template getTemplateValueTpl() {
        return templateValueTpl;
    }
 
    public void setTemplateValueTpl(Template templateValueTpl) {
        this.templateValueTpl = templateValueTpl;
    }
}
Ma jsf
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<h:selectOneMenu value="#{TemplateBean.templateValueTpl}">
           			<f:selectItems value="#{TemplateBean.templates}" var="e"
   			            itemLabel="#{e.name}" itemValue="#{e}" />
   		        </h:selectOneMenu>
Je reçois le message d'erreur quand je veux récupérer la valeur sélectionnée dans ma comboBox.

La même chose mais en utilisant du String comme valeur de retour ne pose aucun problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
                <h:selectOneMenu value="#{TemplateBean.templateValueString}">
           			<f:selectItems value="#{TemplateBean.templates}" var="e"
   			            itemLabel="#{e.name}" itemValue="#{e.content}" />
   		        </h:selectOneMenu>
Une idée de ce que je dois faire pour pouvoir bosser avec des Objets au lieu des Strings ?

Merci d'avance.