Как отправить переменную Javascript на сервер?

Я должен добавить элементы в существующий код, но я не знаю всех установленных шаблонов. Мне нужно получить значение из числового поля в javascript, сохранить его в переменной тега JSP и отправить в метод Java. Я знаю, что javascript - это клиентская сторона, а Java - серверная.

Это числовое поле «ЗОНА», значение которого необходимо восстановить для цикла.

Добавленный код вводится «ЗОНА», кнопка «Действие» «ADD_ELEMENT_LISTE_OUVERTE_1», а также переменная и цикл «зона».

Благодарность !

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>

Метод Java, который будет извлекать переменную ZONE для цикла

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

person frexville    schedule 16.01.2012    source источник
comment
На этот раз в вопросе слишком много кода... В любом случае, вы не можете передавать значения из JavaScript в JSP в Java (наоборот), что вы можете< /i> нужно сделать вызов Ajax из JavaScript.   -  person Viruzzo    schedule 16.01.2012
comment
Прошу прощения за весь код, потому что я хотел объяснить, возможно. Я отредактирую это. На стороне JSP мне удалось получить значение элемента с помощью функции JS getZoneJS(). Теперь я хочу установить его в переменной и отправить в метод java. Я не думаю, что AJAX поможет мне больше.   -  person frexville    schedule 16.01.2012


Ответы (1)


Установите его как значение скрытого поля ввода, заключенного в форму, которую вы хотите отправить.

Поскольку я понятия не имею, что эти теги <popo:xxx> представляют/генерируют, они, кажется, являются частью пользовательской библиотеки тегов, я не могу дать подходящий ответ. Но в основном это должно выглядеть так:

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

который вы можете установить следующим образом с помощью JS:

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

он будет доступен в качестве параметра запроса на стороне сервера обычным способом после отправки формы:

String foo = request.getParameter("foo");
person BalusC    schedule 16.01.2012
comment
‹popo:xxx› — это библиотека пользовательских тегов. Я получаю значения ввода как var zone=(parseInt(document.form.elements[zone].value)); и я хочу установить его в переменной JSP и использовать в контексте моего метода java. - person frexville; 16.01.2012
comment
Да, уже догадались. Я не узнаю это имя как одну из существующих и хорошо известных библиотек тегов. Если это пользовательская библиотека, вы можете не ожидать поддержки 1:1, потому что никто другой с ней не знаком. По крайней мере, я опубликовал ответ, который показывает, как это сделать в стандартном JSP/JS/Servlet, чтобы вы могли применить извлеченные уроки в своей пользовательской библиотеке тегов. Если вы совсем не понимаете мой ответ, то он просто останавливается здесь. - person BalusC; 16.01.2012
comment
@frexville найдите какой-нибудь hidden input подобный элемент управления в своем наборе инструментов и соответствующим образом измените приведенный выше код. - person Apurv; 08.02.2012