【问题标题】:Pass geolocation JavaScript values to a Bean [duplicate]将地理位置 JavaScript 值传递给 Bean [重复]
【发布时间】:2014-03-20 14:11:44
【问题描述】:

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

【问题讨论】:

  • 您如何向服务器发起请求以初始化托管 bean:通过更改当前 URL 的 GET 请求或通过 ajax 请求?
  • 通过 GET 请求,对于我的页面导航,我使用 prettyfaces

标签: javascript jsf primefaces geolocation


【解决方案1】:

我终于找到了答案,如果有人遇到同样的问题,我会放在那里。 您必须按照以下步骤操作:

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) 在backing bean中使用这个方法

void myListener(){
                String param1 = (String) FacesContext.getInstance().getExternalContext().getRequestParameterMap().get("paramName1");
                …
}

【讨论】:

  • 方法不应该是:getCurrentInstance()吗?
【解决方案2】:

这是 HTML5 应用程序中的 JavaScript 代码。我已经测试过了。

navigator.geolocation.getCurrentPosition(function(position) {

    //lon      
    var lon = position.coords.longitude;

    //lat
    var lat = position.coords.latitude;

    //alert(lon+", "+lat);



    });

【讨论】:

  • 不幸的是,这不是我想要的:p 在我的代码中,我已经显示了这些值,但我想要将这些地理位置值存储为我的项目中的数据,我想设置 lon、lat 和准确到 Item 属性
  • 但是你不想在html5中?我从你那里看到 java 或 android 左右的代码
  • 我想将这些值传递给我的托管 bean,因为我需要在我的 Java 代码中发出 POST 请求
猜你喜欢
  • 2019-09-27
  • 2015-01-07
  • 2015-12-02
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 2013-05-05
相关资源
最近更新 更多