ฉันกำลังพยายามประมวลผลข้อมูลอินพุตสองสามบรรทัดโดยใช้วิธี JavaScript ที่ใช้บริการ Geocoding ที่ Google มอบให้ และวางข้อมูลที่ประมวลผลนั้นลงใน Backing Bean
ผู้ใช้จะเห็นหน้าเข้าสู่ระบบซึ่งพวกเขาป้อนรายละเอียดที่อยู่ของตน ทันทีที่คลิกปุ่มส่ง ฉันจะพยายามระบุพิกัดทางภูมิศาสตร์ของที่อยู่โดยการเรียกวิธี JavaScript วิธีนี้จะอ่านข้อมูลที่ผู้ใช้ป้อนและส่งไปยังบริการ geocode บริการนี้ใช้เวลาไม่กี่วินาทีในการดำเนินการ ทันทีที่เสร็จสิ้น ฉันต้องการจัดเก็บข้อมูลที่พบใน backing 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}" />
ฉันกำลังพยายามทำให้ทั้งหมดนี้เกิดขึ้นโดยใช้ปุ่มที่ใช้ในการส่งแบบฟอร์ม
<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