2012-01-16 3 views
1

Je dois ajouter des éléments à un code existant, mais je ne connais pas tous les modèles établis. Je dois récupérer une valeur d'un champ numérique dans javascript, la stocker dans une variable de balise JSP et la soumettre à une méthode Java. Je sais que javascript est côté client et Java côté serveur.Comment envoyer une variable Javascript au serveur?

Ceci est un champ numérique « ZONE » dont la valeur doit être récupérée pour une boucle

Le code ajouté est entrée « ZONE », le buton d'action « ADD_ELEMENT_LISTE_OUVERTE_1 » et la variable et la boucle « zone ».

merci!

code côté JSP:

<popo:form> 

    <div class="left"> 
    nombre de colonnes <input type="number" id="zone" name="zone" class="text" maxlength="25" valeur="" /> 
    </div> 
    <div class="right"> 
     <%controller.getContext().getInteger(ListeOuverteContributionDetailController.ZONE) =%> 

     <script type="text/javascript"> 
      function getZoneJS() { 
       var zone=(parseInt(document.form.elements["zone"].value)); 
       if (zone != null){ 
        return zone; 
       }           
      } 
     </script> 

     <popo:action name="ADD_ELEMENT_LISTE_OUVERTE_1" text="Ajouter les colonnes" />         
    </div> 

    <popo:listpanel dtcid="<%=ListeOuverteContributionDetailController.DTC_ELEMENTS_LISTE_OUVERTE%>" readonly="false"> 

     <popo:grid cols="2" colwidth="200px,*"> 
      <popo:iterator> 
       <popo:field name="VALEUR"/> 
       <popo:action name="DELETE_ELEMENT_LISTE_OUVERTE" text="<%=controller.getTextSupprimer()%>" style="icon"/> 
      </popo:iterator> 
     </popo:grid> 
    </popo:listpanel> 

    <div class="left"> 
     <popo:action name="ADD_ELEMENT_LISTE_OUVERTE" text="Ajouter un élément"/> 
    </div> 
    <div class="left"> 
     <%--<popo:link address="<%=AddressItems.IMPORT_LISTE_OUVERTE_ADDRESS.getAddress()%>" fields="CHAMP_ID" objects="<%="FOR_ID," + controller.getChampKey(champId)+","+controller.DTC_ELEMENTS_LISTE_OUVERTE%>" style="button">Importer</popo:link>--%> 
     <popo:action name="IMPORT_LISTE_OUVERTE" text="Importer"/> 
    </div> 
    <div class="left"> 
     <popo:action name="EXPORT_LISTE_OUVERTE" text="Exporter" /> 
    </div> 
    <div class="clear"></div> 

    <div class="buttonbar"> 
     <div class="left"> 
      <popo:link address="<%=AddressItems.SECTION_CONTRIBUTION_DETAIL_ADDRESS.getAddress()%>" fields="SEC_ID" objects="FOR_ID" params="<%="MODE=" + DetailController.MODE_EDIT%>" style="button" confirm="<%=Constantes.MSG_CONFIRM_QUITTER_ECRAN_CREATION_MAJ%>">Abandonner</popo:link> 
     </div> 
     <div class="right"> 
      <popo:action name="SAVE_MODIFICATIONS_LISTE_OUVERTE" text="Enregistrer" isdefaultaction="true"/> 
     </div> 
    </div> 
</popo:form> 
méthode

Java qui permet de récupérer la variable ZONE à boucle

public class ListeOuverteContributionDetailController extends AbstractContributionController { 

    /** 
    * Liste des éléments de la liste ouverte. 
    */ 
    public static final String DTC_ELEMENTS_LISTE_OUVERTE = "DTC_ELEMENTS_LISTE_OUVERTE"; 
    public static final String SI_AJOUT_ELEMENT = "SI_AJOUT_ELEMENT"; 
    public static final String ZONE = "ZONE"; 

    public Message executeAddElementListeOuverte1() throws KUserException, KSystemException { 

     final DtCollection<ElementListeOuverte> elementsListeOuverte = getContext().<ElementListeOuverte>getDtCollectionInput(DTC_ELEMENTS_LISTE_OUVERTE).validate(); 
     // la valeur zone qui doit être récupérée de la JSP 
     final int zone = Integer.parseInt(getContext().getString(ZONE)); 
     for (int i = 1; i <= zone; i++) { 
      // On ajoute un élément à la liste des éléments stockée dans le contexte en le flagant "Nouveau" 
      final ElementListeOuverte elementListeOuverte = new ElementListeOuverte(); 
      final ChampContribution champ = getContext().<ChampContribution>getDtObjectInput(getChampKey(getContext().getLong(CHAMP_ID))).validate(); 
      elementListeOuverte.setChampId(champ.getChampId()); 
      elementListeOuverte.setSiNouveau(true); 
      elementListeOuverte.setSiSupprime(false); 
      elementsListeOuverte.add(elementListeOuverte); 

      getContext().put(SI_AJOUT_ELEMENT, true); 
     } 
     return refresh(); 
    } 
} 
+0

pour une fois, il est * trop * code dans la question ... dans tous les cas, vous ne pouvez pas transmettre des valeurs de JavaScript JSP Java (il est l'inverse), ce que vous * pouvez * faire est de faire un appel Ajax f rom JavaScript. – Viruzzo

+0

Je suis désolé pour le code entier, parce que je voulais expliquer peut prob. Je vais l'éditer. Du côté des JSP, j'ai réussi à obtenir la valeur de l'item avec la fonction JS getZoneJS(). Maintenant, je veux le mettre dans une variable et le soumettre à la méthode java. Je ne pense pas qu'AJAX m'aidera davantage. – frexville

Répondre

3

Définir comme la valeur d'un champ caché qui est enfermée sous la forme que vous aimerais soumettre.

Comme je n'ai aucune idée de ce que ces balises <popo:xxx> représentent/génèrent, elles semblent faire partie d'une bibliothèque de balises personnalisée, je ne peux pas donner une réponse appropriée. Mais il devrait se terminer essentiellement à ressembler à ceci:

<form ...> 
    ... 
    <input type="hidden" id="foo" name="foo" /> 
</form> 

que vous pouvez définir comme suit par JS:

document.getElementById("foo").value = yourNewValue; 

il sera disponible en tant que paramètre de demande du côté du serveur la façon habituelle une fois le formulaire soumis:

String foo = request.getParameter("foo"); 
+0

est une bibliothèque de balises personnalisées. Je reçois les valeurs iput comme var zone = (parseInt (document.form.elements ["zone"]. Value)); et je veux le mettre sur une variable JSP et l'utiliser dans le contexte de ma méthode java. – frexville

+1

Oui, je l'ai déjà deviné. Je ne reconnais pas ce nom comme l'une des bibliothèques de balises existantes et bien connues. S'il s'agit d'une bibliothèque personnalisée, vous ne pouvez pas vous attendre à un support 1: 1 car personne d'autre ne le connaît. J'ai au moins posté une réponse qui montre comment le faire dans JSP/JS/Servlet standard, de sorte que vous pouvez appliquer les leçons apprises dans votre bibliothèque de balises personnalisées. Si vous ne comprenez pas ma réponse, alors ça s'arrête juste ici. – BalusC

+0

@frexville cherchez un contrôle '' input caché '' dans votre boîte à outils et modifiez le code ci-dessus en conséquence. – Apurv

Questions connexes