0

我正在尝试在我的 JSF-2/Primefaces-3 应用程序中获取纬度和经度。我正在使用以下代码:

XHTML

<h:inputText id="address" value="#{nyBean.address}" />
<p:remoteCommand name="rmtCommandGeocoder" actionListener="#{myBean.getCordinates}" />

JAVA脚本

function geocoder() {
   var geocoder = new google.maps.Geocoder();
   var address = document.getElementById("address").value;
   geocoder.geocode({
      'address' : address
   }, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
         // Calls the remoteCommand "rmtCommandGeocoder",
         // passing the coordinates to map of parameters
         rmtCommandGeocoder([ {
            name : 'latitude',
            value : results[0].geometry.location.lat()
         }, {
            name : 'longitude',
            value : results[0].geometry.location.lng()
         }]);
      }
   });
}

public void getCordinates() {
   FacesContext context = FacesContext.getCurrentInstance();
   Map<String, String> parameterMap = context.getExternalContext().getRequestParameterMap();
   double latitude = Double.parseDouble((String) parameterMap.get("latitude"));
   double longitude = Double.parseDouble((String) parameterMap.get("longitude"));
}

这里的问题是 getCordinates() 没有被调用。有什么线索吗?

4

1 回答 1

2

将签名更改为

public void retriveCordinates(ActionEvent event){

或者只是从actionListener变成action

最佳做法是仅对 getter/setter使用get或前缀,这就是为什么我改成setgetCordinatesretriveCordinates

于 2012-10-09T10:14:36.913 回答