Как получить значение элемента h: inputHidden, значение которого рассчитывается с использованием jquery javascript - PullRequest
4 голосов
/ 06 мая 2011

Мое требование - когда пользователь нажимает кнопку отправки, новое вычисленное значение должно быть сохранено в значении поля inputHidden. Я написал функцию в jQuery, чтобы вычислить новое значение для поля inputHidden при нажатии кнопки отправки. Новое значение присваивается значению поля inputHidden. Но проблема в том, что при извлечении значения из базового компонента с помощью hidden.getValue () он возвращает нулевое значение.

    jQuery code:
    function hidden(){
    var valueCalculated = '3';
    $('#hidden').val(valueCalculated);
    alert($('#hidden').val());  //displays 3 when submit button is clicked.
    }

   JSF code:
   <h:inputHidden binding="#{bean.hidden}"/>

В бобе, У меня есть геттеры и сеттеры для скрытого типа HTMLInputHidden, и я получаю скрытое значение с помощью getValue (). Это должно вернуть значениеCalculated, но оно возвращает ноль. Как получить расчетное значение в бобе поддержки.

1 Ответ

7 голосов
/ 06 мая 2011

HtmlInputHidden#getValue() вернет отправленное значение только тогда, когда вы находитесь в фазе действия invoke. Это было установлено на этапе обновления значений модели. Так что, если вы пытаетесь получить его во время построения бина или во время другой фазы JSF до того, как вызовет фазу действия, вы получите null.

Чтобы это исправить, переписайте логику кода, чтобы к ней обращались в нужный момент; в командную кнопку / метод действия ссылки. В противном случае вы должны получить его вручную из карты параметров запроса.

1009 * Е.Г. *

<h:form id="form">
    <h:inputHidden id="hidden" value="#{bean.hidden}" />
    <h:commandButton value="submit" action="#{bean.submit}" onclick="$('#form\\:hidden').val('foo')" />
</h:form>

с

public void submit() {
    // Here, in the bean's action method, it should already be set.
    System.out.println(hidden); // "foo"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...