将地理位置JavaScript值传递给Bean

时间:2014-03-20 14:11:45

标签: javascript jsf primefaces geolocation

我必须将使用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。如果您需要更多信息,请随时提出。

2 个答案:

答案 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);



    });