Skip to main content

How to send a Javascript variable to server side?



I must add items to an existing code, but I do not know all the patterns established. I need to retrieve a value from a numeric field in javascript, store it in a JSP tag variable and submit it to a Java method. I know javascript is client side and the server-side Java.





This is a numeric field "ZONE" whose value must be recovered for a loop





The added code is input "ZONE", the Action buton "ADD_ELEMENT_LISTE_OUVERTE_1" and the variable and loop "zone".





thanks !





JSP-side code:







<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>







Java method that will retrieve the ZONE variable to loop







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();

}

}




Comments

  1. Set it as the value of a hidden input field which is enclosed in the form you'd like to submit.

    As I have no idea what those <popo:xxx> tags represent/generate, they seem to be part of a custom tag library, I can't give a suitable answer. But it should basically end up to look like this:

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


    which you can set as follows by JS:

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


    it'll be available as a request parameter in the server side the usual way once the form is submitted:

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

    ReplyDelete

Post a Comment

Popular posts from this blog

Slow Android emulator

I have a 2.67 GHz Celeron processor, 1.21 GB of RAM on a x86 Windows XP Professional machine. My understanding is that the Android emulator should start fairly quickly on such a machine, but for me it does not. I have followed all instructions in setting up the IDE, SDKs, JDKs and such and have had some success in staring the emulator quickly but is very particulary. How can I, if possible, fix this problem?