Я пытаюсь обработать несколько строк входных данных, используя метод JavaScript, в котором используется служба геокодирования, предоставленная Google, и помещаю обработанные данные в резервный компонент.
Пользователям предоставляется страница входа, на которой они вводят свои адресные данные. Как только нажимается кнопка отправки, я пытаюсь геокодировать их адрес, вызывая метод JavaScript. Этот метод считывает введенные пользователем данные и отправляет их в службу геокодирования. Выполнение этой службы занимает несколько миллисекунд. Как только он завершится, я хочу сохранить данные, которые он нашел, в компоненте поддержки страницы входа.
Следующая функция JavaScript используется для геокодирования адреса.
function codeAddress() {
alert('coding address');
geocoder = new google.maps.Geocoder();
postcode = document.getElementById('loginForm:address').value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
alert('setting location: '+results[0].geometry.location);
document.getElementById('loginForm:location').value = results[0].geometry.location;
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
}
Он сохраняет свое значение в скрытом поле, расположенном внутри формы. Я не знаю, лучше ли это сделать, просто я видел это во многих примерах. Я предполагаю, что установка значения этого компонента вызовет соответствующий установщик местоположения в loginBean.
<h:inputHidden id="location" value="#{loginBean.location}" />
Я пытаюсь сделать все это с помощью кнопки, используемой для отправки формы.
<p:commandButton id="submitButton" value="login"
action="#{loginBean.doLogin}"
styleClass="blue login" update="growl">
<p:ajax event="click" onstart="codeAddress()" />
</p:commandButton>
Я должен добавить, что я не уверен в этой конструкции. Нажатие кнопки отправки, вероятно, сразу загружает следующую страницу, даже не давая шанса вызову ajax.
Попытка выполнить это поставила меня перед несколькими проблемами. Используя приведенный выше код, функция JavaScript никогда не вызывается. Для простоты я объявил эту функцию вверху страницы в теге скрипта. Вторая проблема заключается в том, что мне неясно, как лучше всего передать это значение из метода JavaScript в loginBean. Должен ли я поместить какой-то скрытый тег внутри формы и связать его тег значения со свойством loginBean? Должен ли я добавить слушателя к компоненту ajax?
onstart="codeAddress"
? Если это замените это наonstart="codeAddress()"
. - person partlov   schedule 26.02.2013<h:outputScript name="js/myFile.js" target="head" />
, поместите файл js в папку WebContent\resource - person Daniel   schedule 26.02.2013