我正在嘗試使用JavaScript方法處理幾行輸入數據,該方法使用Google提供的地理編碼服務,並將處理後的數據放入支持bean中。通過JavaScript將表單數據傳遞到使用JSF和primefaces的支持bean
用戶會看到一個登錄頁面,在其中輸入他們的地址詳細信息。只要點擊提交按鈕,我會嘗試通過調用JavaScript方法來對他們的地址進行地理編碼。該方法讀取用戶輸入的數據並將其發送到地理編碼服務。該服務需要幾個毫秒才能完成。一旦完成,我希望將它在登錄頁面的後臺bean中找到的數據存儲起來。
以下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}" />
我試圖使用這個按鈕來提交表單。我不得不補充說,我不確定這種結構。按提交按鈕可能會立即加載下一頁,甚至沒有給ajax調用一個機會。
試圖做到這一點給了我幾個問題。 使用上面的代碼,JavaScript函數永遠不會被調用。爲了簡單起見,我已經在腳本標籤的頁面頂部聲明瞭這個函數。 第二個問題是,我不清楚什麼是將這個值從JavaScript方法傳遞給loginBean的最佳方法。我應該在表單中放置一些隱藏標籤並將其值標籤鏈接到loginBean屬性?我應該將偵聽器添加到ajax組件嗎?
這是打字錯誤還是你真的有'onstart =「codeAddress」'?如果它是用'onstart =「codeAddress()」'代替。 – partlov 2013-02-26 11:24:31
對不起,這確實是一個錯字。 – malebox 2013-02-26 11:51:40
@malebox如果你的js沒有被調用,這意味着你沒有將它包含在你的頁面中 ',把js文件放入WebContent \資源文件夾 –
Daniel
2013-02-26 14:25:49