Согласно моему сценарию, нужно сначала вызвать JavaScript. После вызова javascript будут обновлены два скрытых значения. С обновленными скрытыми значениями необходимо вызвать метод Bean. В этом случае я получаю метод javascript и bean в то же время. Поэтому в моем методе bean я не получаю обновленные значения в скрытых полях.Как вызвать метод прослушивателя или бэк-компонента после завершения вызова javascript в jsf?
Немного подробно объяснение
Textbox (адрес) используется для ввода адреса. И наличие двух скрытых элементов, которые будут использоваться для хранения названия улицы и имени города на основе поля адреса.
По вызову Javascript, собирая два значения (название улицы и название города) из API карт google (codeAddress()). На основе введенного адреса в текстовом поле обновляются два скрытых поля (улица и город). Метод Bean должен обрабатывать с обновленными скрытыми значениями.
Но из моего кода вызывается бин и скрипт java. Поэтому я не получаю Обновленное значение в Бэк-бэке.
Мой код выглядит следующим образом:
JSF КОД
<h:form prependId="false">
<div id="panel-one">
<h:outputLabel value="ADDRESS"/>
<h:inputText type="text" id="address" size="40" value="#{Bean.address}"/>
<h:inputHidden id="street" value="#{Bean.streetName}" />
<h:inputHidden id="city" value="#{Bean.city}" />
<h:commandButton type="submit" value="Verify Address"
onclick="checkAddress()">
<f:ajax execute="@form" render="@none" listener="#{Bean.checkAddress()}"/>
</h:commandButton>
</div>
</h:form>
Javascript
checkAddress() {
document.getElementById("street").value = //Setting value from other javascript API;
document.getElementById("city").value = //Setting value from other javascript API;
}
В вышеприведенном JavaScript сбора значений и установить его с двумя текстовом поле. С обновленными значениями снова вызовите метод checkAddress () в фоновом режиме. FYI: * checkAddress() * есть AJAX CALL. Я ошибаюсь в h: commandButton JSF, но не знаю, как это исправить. Буду признателен за любую оказанную помощь.
Почему бы вам просто не удалить атрибут «actionListener» и просто сделать то же самое с валидаторами? Или переместите эту логику в методе отправки. – mitpatoliya
@mitpatoliya: Не могли бы вы объяснить немного больше. Что вы подразумеваете под методом отправки? – ArunRaj
@mitpatoliya: Удален атрибут actionListener из commandButton и помещен атрибут listenener в тег ajax. Все тот же результат. Это вы пытались сказать? – ArunRaj