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

[韓日関係] 首相含む大幅な内閣改造の可能性…早ければ来月10日ごろ=韓国

div not scrolling properly with slimScroll plugin

I am using the slimScroll plugin for jQuery by Piotr Rochala Which is a great plugin for nice scrollbars on most browsers but I am stuck because I am using it for a chat box and whenever the user appends new text to the boxit does scroll using the .scrollTop() method however the plugin's scrollbar doesnt scroll with it and when the user wants to look though the chat history it will start scrolling from near the top. I have made a quick demo of my situation http://jsfiddle.net/DY9CT/2/ Does anyone know how to solve this problem?

Why does this javascript based printing cause Safari to refresh the page?

The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex