J'ai l'impression de ne pas avoir compris la définition du contexte Conversation.
J'ai actuellement une page avec des requêtes Ajax qui modifient les propriétés de mon entité
J'ai également une Action qui référence mon entité
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 <a4j:outputPanel id="outputfield-panel"> <rich:dataTable var="_outputField" value="#{reportTemplateAction.reportTemplate.outputFields}" rendered="#{not empty reportTemplateAction.reportTemplate.outputFields}"> <f:facet name="header"> <rich:columnGroup> <rich:column> <h:outputText value="Champs" /> </rich:column> <rich:column> <h:outputText value="Ordre" /> </rich:column> </rich:columnGroup> </f:facet> <rich:column> <h:outputText value="#{_outputField.name}"/> </rich:column> <rich:column> <h:selectOneRadio value="#{_outputField.sort}" layout="lineDirection"> <f:selectItem itemValue="0" itemLabel="NO" /> <f:selectItem itemValue="1" itemLabel="ASC" /> <f:selectItem itemValue="2" itemLabel="DSC" /> <a4j:support event="onchange" reRender="outputfield-panel" /> </h:selectOneRadio> </rich:column> </rich:dataTable> </a4j:outputPanel>
Il me semblait que le contexte Conversation gardait l'état de mon entité en Session puis, à l'aide de l'annotation @End sur une méthode donnée, faisait un commit dans ma base de données.
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 @Stateful @Name("reportTemplateAction") @Scope(ScopeType.CONVERSATION) public class ReportTemplateActionImpl extends Action implements ReportTemplateAction { protected ReportTemplate reportTemplate; public ReportTemplate getReportTemplate() { return reportTemplate; } @Begin(join = true) @Create public void initialize() { if(reportTemplate == null) { loadTemplate(); } } @End public void saveReport() { ReportTemplate currentTemplate = reportTemplate; [...] facadeLocator.getReportTemplateFacade().save(currentTemplate); }
Or lorsque je modifie une propriété à l'aide d'une requête Ajax, dans ce cas-ci la propriété sort, l'entité est modifiée dans la base de données sans que j'ai appelé la méthode saveReport()
Quelqu'un peut-il m'expliquer pourquoi la modification est faite dans la base de données juste sur un appel Ajax?
je suis débutant avec Seam, j'espère être suffisamment clair.
Partager