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 :
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) :
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.
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 :
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 :
<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
Partager