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

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.