我必须将使用html5地理位置获得的地理位置值传递给我的托管bean ItemMb,这是我的代码,以澄清事情,我真的不知道如何实现这一点。
我的托管bean
public class ItemMb {
private Item item = new Item();
// get/set
}
我的dto项目
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文件,其中我获得了地理位置值,并在一些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。如果您需要更多信息,请随时提出。
答案 0 :(得分:4)
我终于找到了答案,如果有人遇到同样的问题,我会把它放在那里。 您必须按照以下步骤操作:
1)定义一个primefaces remoteCommand
<p:remoteCommand name="myRemoteCommand" process="@this" autoRun="false" actionListener="#{myMb.myListener}"/>
2)在JavaScript代码中调用命令
myRemoteCommand ([{name:'paramName1', value: 'paramValue1'}, {name:'paramName2', value: 'paramValue2'}, …]);
3)在支持bean中使用此方法
void myListener(){ String param1 = (String) FacesContext.getInstance().getExternalContext().getRequestParameterMap().get("paramName1"); … }
答案 1 :(得分:0)
以下是HTML5应用程序中的JavaScript代码。我已经测试过了。
navigator.geolocation.getCurrentPosition(function(position) {
//lon
var lon = position.coords.longitude;
//lat
var lat = position.coords.latitude;
//alert(lon+", "+lat);
});