我必须通过使用html5地理定位获得的地理位置值到我的管理bean ItemMb,这里是我的代码来澄清事情,我真的不知道如何实现这一点。
我的管理bean
public class ItemMb {
private Item item = new Item();
// get/set
}
My dto Item
public class Item {
// private Double idCollect;
// login et password
private Double lat;
private Double lon;
private Double accuracy;
private String photo;
private String remark;
public Item(){
}
// getters and setters
这是我的。js文件,我得到了地理位置值和innertext它们在一些primefaces标签
window.watchID = navigator.geolocation.watchPosition(function(position){
document.getElementById("xCurrentPosition").innerHTML = (Math.round(position.coords.latitude*100) / 100);
document.getElementById("yCurrentPosition").innerHTML = (Math.round(position.coords.longitude*100) / 100);
document.getElementById("accuracyCurrentPosition").innerHTML = position.coords.accuracy;
});
现在我想把这些JavaScript生成的地理位置值传递给我的托管bean ItemMb。
我终于找到了答案,我将把它放在那里,以防有人有同样的问题。您必须遵循以下步骤:
1)定义一个primefaces remoteCommand
2)在JavaScript代码中调用命令<p:remoteCommand name="myRemoteCommand" process="@this" autoRun="false" actionListener="#{myMb.myListener}"/>
myRemoteCommand ([{name:'paramName1', value: 'paramValue1'}, {name:'paramName2', value: 'paramValue2'}, …]);
3)在backing bean中使用此方法
void myListener(){ String param1 = (String) FacesContext.getInstance().getExternalContext().getRequestParameterMap().get("paramName1"); … }
这是HTML5应用程序中的JavaScript代码。我已经测试过了。
navigator.geolocation.getCurrentPosition(function(position) {
//lon
var lon = position.coords.longitude;
//lat
var lat = position.coords.latitude;
//alert(lon+", "+lat);
});