Я хочу получить широту и долготу точки, созданной службой геокодирования, с использованием геодезических полей и я застрял. Однако, когда я пытаюсь получить эти координаты из бэкбона, я получаю значения 0.0.Графический интерфейс с геодезическими полями 0.0, 0.0 gps от бэкбона
Как я могу получить к ним доступ со временем, когда у них есть правильные значения (сразу после входа в консоль), а не нули?
Обратите внимание, что я новичок в Spring и PF.
Вот мой primefaces переднего конца, где я хочу, чтобы получить доступ к резервному класса боба соответствующих переменных значений:
<script type="text/javascript">
function geocode() {
PF('geoMap').geocode(document.getElementById('address').value);
}
</script>
<h:form prependId="false">
<h3 style="margin-top:0">Geocode</h3>
<h:panelGrid columns="3" style="margin-bottom:10px" cellpadding="5">
<p:outputLabel for="address" value="Address:" />
<p:inputText id="address" />
<p:commandButton value="Geocode" icon="ui-icon-search" onclick="geocode()" type="button" />
</h:panelGrid>
<p:gmap id="geoGmap" widgetVar="geoMap" center="#{geocodeView.centerGeoMap}" zoom="2" type="ROADMAP" model="#{geocodeView.geoModel}" style="width:100%;height:400px">
<p:ajax event="geocode" listener="#{geocodeView.onGeocode}" update="@this" />
</p:gmap>
<!-- Here for example I want to show this values -->
<p:commandButton value="Show values" action="" update="display" oncomplete="PF('dlg').show()" />
<p:dialog header="Value" modal="true" resizable="false" showEffect="fade" widgetVar="dlg">
<h:panelGrid columns="1" id="display">
<h:outputText value="Latitude: #{geocodeView.latitude}" />
<h:outputText value="Longitude: #{geocodeView.longitude}" />
</h:panelGrid>
</p:dialog>
</h:form>
и противни класса бин:
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import org.primefaces.event.map.GeocodeEvent;
import org.primefaces.model.map.DefaultMapModel;
import org.primefaces.model.map.GeocodeResult;
import org.primefaces.model.map.LatLng;
import org.primefaces.model.map.MapModel;
import org.primefaces.model.map.Marker;
@ManagedBean
public class GeocodeView {
private MapModel geoModel;
private String centerGeoMap = "41.850033, -87.6500523";
private double latitude;
private double longitude;
@PostConstruct
public void init() {
geoModel = new DefaultMapModel();
}
public void onGeocode(GeocodeEvent event) {
List<GeocodeResult> results = event.getResults();
if (results != null && !results.isEmpty()) {
LatLng center = results.get(0).getLatLng();
centerGeoMap = center.getLat() + "," + center.getLng();
for (int i = 0; i < results.size(); i++) {
GeocodeResult result = results.get(i);
Marker currentMarker = new Marker(result.getLatLng(), result.getAddress());
geoModel.addOverlay(currentMarker);
// Here are problematic values
latitude = currentMarker.getLatlng().getLat();
longitude = currentMarker.getLatlng().getLng();
System.out.println(latitude);
System.out.println(longitude);
}
}
}
public MapModel getGeoModel() {
return geoModel;
}
public String getCenterGeoMap() {
return centerGeoMap;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
}
Попробуйте @ViewScoped на bean (один из пакета с «bean» в нем) –
Работал! Большое спасибо. Таким образом, это был жизненный цикл bean ... –
Да - я думаю, что по умолчанию RequestScoped, так что вы получите новое все время. Попробуйте - поставьте System.out в init() –