Bonjour,

J'ai effectué une formation JSF où l'on utilisait spring et hibernate en même temps.

Nous avions un bean Test tout simple de la sorte :

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
public class Test {
 
    private int id;
    private String nom;
 
    public Test() {
        super();
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getNom() {
        return nom;
    }
 
    public void setNom(String nom) {
        this.nom = nom;
    }
 
}
et un bean userFactory qui nous fournit les beans Test (via Spring) :

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
public class UserFactory extends HibernateDaoSupport{
	public Test getTest(int id) {
		Test b = null;
        List users = getHibernateTemplate().find("from Test where id = ?", new Integer(id));
        if(users.size( ) > 0) {
            b = (Test)users.get(0);
        }
        return b;
    }
 
	public List getTests() {
		List tests = getHibernateTemplate().loadAll(Test.class);
		return tests;
	}
 
	public void saveTest(Test test){
		getHibernateTemplate().saveOrUpdate(test);
	}
}
Le bean Test est mappé sur une base de donnée MySql grace à Hibernate.

Pendant la formation nous avons donc affichés le contenu de notre table "Test" dans des pages jsf.

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
<h:outputText value="Hello"/> <h:outputText value="#{userFactory.tests}"/>
<hr/>
<h:outputText value="#{userFactory.tests[1].nom}"/>
<hr/>
<h:form>
<h:dataTable value="#{userFactory.tests}" var="test">
	<h:column>
		<h:outputText value="#{test.id}" />
	</h:column>
	<h:column>
 
		<h:inputText value="#{test.nom}"/>
	</h:column>	
</h:dataTable>
</h:form>
et à un moment donné, le formateur nous a montré comment sauvegarder les modifications apportées dans nos champs du formulaire directement dans la base de donnée, en utilisant la methode saveOrUpdate du TemplateHibernate :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
public void saveTest(Test test){
		getHibernateTemplate().saveOrUpdate(test);
	}
Le problème c'est que j'ai un cerveau de poisson rouge et que je ne m'en rappelle plus! Ce que je me souviens c'est que c'était vraiment pas compliqué du tout contrairement à ce que j'ai trouvé sur le net..

Ce que j'aimerais faire c'est genre un bouton que quand je clique dessus il m'enregistre les modifs par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<h:commandButton action="#{userFactory.saveTest(userFactory.tests[1])}"/>
Mais le problème vient au niveau du passage de paramètre de ma fonction saveTest, et j'ai un super méga trou de mémoire...

Merci pour les éventuelles réponses.

a+

Laurent