Bonjour à tous,

j'ai une simple rich:dataTable qui parcourt une liste de projets (Project est mon entité).
Pour chaque projet, il y a un lien pour le voir, l'éditer ou le dupliquer.
La duplication pose problème, en effet, pour chaque action j'utilise un s:link avec une vue et une action. Pour la duplication, il n'y a pas de vue, et donc ça pose problème.
Cliquer sur Dupliquer appelle ProjectCtrl2.duplicateProject(), et le home.getInstance() ne fonctionne pas (sauf si j'ai éditer le même projet juste avant).

Conséquence de ça : si j'édite le projet 1, et que je clique sur "dupliquer le projet 2", ça duplique le projet 1.

Je pense que la réponse est très simple ... mais je coince dessus depuis un moment.

D'avance un très grand merci pour votre aide!

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
 
<ui:param name="project" value="#{listProjects}" />
  <rich:dataTable id="projectTable"
  onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
  onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
  cellpadding="0" cellspacing="0" width="100%" border="0" var="project" value="#{listProjects}">
  <f:facet name="header">
                              <h:outputText>Project name : #{project.name}</h:outputText>
  </f:facet>
 
<rich:column styleClass="pictoCell">
                              <f:facet name="header">Actions :</f:facet>
  <s:link view="/s/projects/view2.xhtml" action="#{projectCtrl2.view}">
  <f:param name="aId" value="#{project.id}"/>
  <f:param name="clId" value="#{project.client.id}"/>
  <img alt="view" src="/img/pictoloupe.png" class="pictoButton"/>
  </s:link>
  <s:link view="/s/projects/edit2.xhtml" action="#{projectCtrl2.edit}">
  <f:param name="aId" value="#{project.id}"/>
  <f:param name="clId" value="#{project.client.id}"/>
  <img alt="edit" src="/img/pictocrayon.png" class="pictoButton"/>
  </s:link>
  <s:link action="#{projectCtrl2.duplicateProject}">
  <f:param name="aId" value="#{project.id}"/>
  <f:param name="clId" value="#{project.client.id}"/>
                                        Duplicate
  </s:link>
  </rich:column>
ProjectCtrl2 :
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
 
@Begin(flushMode=FlushModeType.MANUAL, join=true)
          public void view() {
                    home.getInstance();
          }
          @Begin(flushMode=FlushModeType.MANUAL, join=true)
          public void newProject() {
  logger.info("New project... ");
                    home.clearInstance();
                    home.getInstance();
          }
          @Begin(flushMode=FlushModeType.MANUAL, join=true)
          public void duplicateProject() {
  logger.info("Duplicating project ...");
                    logger.info("Current project id = #0", home.getInstance().getId());
                    NewProject copy = home.getInstance();
                    logger.info("Copy project id = #0", copy.getId());
                    NewProject pj = new NewProject();
                    pj.setClient(copy.getClient());
                    pj.setCreationDate(copy.getCreationDate());