2010-12-13 67 views
2

ce morceau de code me donne des problèmes (richfaces 3.3.2.GA):Glissez et déposez problème richfaces

<rich:dragIndicator id="indicator"> </rich:dragIndicator> 


        <h:dataTable id="myData" value="#{resultArray}" var="data" > 
         <h:column> 
          <a4j:outputPanel> 

           <rich:dragSupport id="myDrag" dragIndicator="indicator" dragType="sug" dragValue="#{data}" > 
            <rich:dndParam name="name" value="#{data.name}" > 
             </rich:dndParam>        
           </rich:dragSupport> 
           <h:outputText value="#{data.name}"></h:outputText> 



          </a4j:outputPanel> 
         </h:column> 
        </h:dataTable> 

     <rich:panel id="myPanel"> 
      <f:facet name="header">Drop Zone</f:facet> 
       <rich:dropSupport id="dropZone" acceptedTypes="sug" dropListener="#{dropSuggestion}" reRender="box"/> 
      </rich:panel>    


     <rich:dataTable id="box" value="#{nameList}" var="cap2"> 
      <f:facet name="caption">Concepts chosen</f:facet> 
       <h:column> 
        <h:outputText value="#{cap2.name}"/> 
       </h:column> 
     </rich:dataTable> 

L'action appelée:

public void dropSuggestion(DropEvent event) 


      System.out.println("OntologyActions.dropSuggestions"); 
      FacesContext context = FacesContext.getCurrentInstance(); 


      OntologyActions dropItem = new OntologyActions(); 
      String dropItemString=event.getDragValue().toString(); 

      //Get request items 
      dropItem= (OntologyActions) event.getDragValue(); 

      //Locate the position of the dropped element 
      int index = dropItem.resultArray.indexOf(dropItemString); 

      System.out.println("String: " + dropItemString + " DropItem: " + dropItem.resultArray.get(index).name + " Index: " + index); 

      //Add the element to the selected array 
       selectedSuggestionsArray.add(dropItem.resultArray.get(index)); 
      nameList.add(dropItemString); 

      //resultArray.remove(dropItem); 
    } 

Le problème est, quand je laisse tomber l'élément dans la zone de largage, aucune action ne se produit, mais je suis sûr qu'il peut voir cette zone de largage, car je vois des couleurs vertes ou rouges, en fonction des types acceptés.

Mais le concept n'est pas supprimé du conteneur et n'est pas ajouté à la zone de dépôt.

Quand je touchais cette page, je reçois cette erreur:

drop: Element with [form1:j_id640:_form:myPanel] ID was not found in the DOM tree.

Probably element has no client ID or client ID hasn't been written. DnD's disabled. Check please!

Et dans la console JSF (mais juste dans la première tentative), le débogage avec Firebug:

Node was not found" code: "8

Est-ce familier à n'importe qui??

Merci à l'avance

Répondre

1

Je pense que vous avez défini la méthode dropListener de manière incorrecte. Il devrait être dropListener="#{beanName.dropSuggestion}", non seulement le nom de la méthode, je pense. Cela expliquerait pourquoi aucune action n'est effectuée. Je ne suis pas sûr des autres erreurs que vous obtenez.

+1

Ce problème était lié à a4j: form et leurs incompatibilités. –