...
Ici merge permet de mettre à jour l'objet en base de données. L'objet passé en paramètre peut être déjà rattaché à la session de persistance ou non. L'objet qui est renvoyé est une copie de l'objet passé en paramètre et est rattaché à la session de persistance.
...
Écrire les méthodes ci-dessus dans les classes ad hoc.
| solution |
|---|
Ajouter à l'interface DaoService : | Bloc de code |
|---|
void addEntry(Entry entry);
List<Entry> getEntries();
|
Ajouter dans la classe HibernateDaoServiceImpl: | Bloc de code |
|---|
void addEntry(Entry entry) {
addObject(entry);
}
List<Entry> getEntries() {
return getHibernateTemplate().loadAll(Entry.class);
}
|
Ajouter à l'interface DomainService : | Bloc de code |
|---|
Entry addEntry(String value);
List<Entry> getEntries();
|
Ajouter dans la classe DomainServiceImpl: | Bloc de code |
|---|
Entry addEntry(String value) {
Entry entry = new Entry();
entry.setValue(value);
entry.setDate(new Timestamp(System.currentTimeMillis()));
daoService.addEntry(entry);
return entry;
}
List<Entry> getEntries() {
return daoService.getEntries();
}
|
|
...
Faire en sorte que l'appui sur le bouton de test1.jsp enregistre la valeur de test1Controller.myInput comme une nouvelle instance de Entry dans la base de données.
Contrôler la présence d'une nouvelle entrée dans la base de données à chaque clic.
| solution |
|---|
Modifier la page test1.jsp | Bloc de code |
|---|
<%@include file="_include.jsp"%>
<e:page stringsVar="msgs" menuItem="test1"
locale="#{sessionController.locale}">
<%@include file="_navigation.jsp"%>
<h:form>
<e:messages/>
<e:inputText value="#{test1Controller.myInput}"/>
<e:commandButton value="#{msgs['MESSAGE.ENTRY.SAVE']}"
action="#{test1Controller.addEntry}"/>
<e:commandButton value="SetTest2Value"
action="goToTest2">
<t:updateActionListener value="#{test1Controller.myInput}"
property="#{test2Controller.value}"/>
</e:commandButton>
</h:form>
</e:page>
|
Ajouter dans Test1Controller la méthode addEntry | Bloc de code |
|---|
/**
* Add an entry.
*/
public void addEntry() {
getDomainService().addEntry(getMyInput());
}
|
|
...
Afficher les objets de type Entry de la base de données sous forme d'une liste en dessous du bouton de test1.jsp.
On doit pour cela parcourir les entrées à l'aide de :
| Bloc de code |
|---|
<t:dataList value="#{test1Controller.entries}" var="entry">
<e:li value="#{entry.value} (#{entry.date})" />
</t:dataList>
|
| solution |
|---|
Ajouter dans Test1Controller la méthode getEntries | Bloc de code |
|---|
/**
* @return List<Entry>
*/
public List<Entry> getEntries() {
return getDomainService().getEntries();
}
|
|