0

PrimeFaces を使用した Bean と JSF ビューに問題があります。マーカーに関連付けられた Google マップの座標をテーブルに入力する必要があります。それはほぼ完了しています。途中でいくつかの小さな問題があります。誰かが指示を与えることができますか?

ここに豆があります:

import java.io.Serializable;  
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;   
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;  
import javax.faces.event.ActionEvent;  

import org.primefaces.model.map.DefaultMapModel;  
import org.primefaces.model.map.LatLng;  
import org.primefaces.model.map.MapModel;  
import org.primefaces.model.map.Marker;
@SuppressWarnings("serial")
@ManagedBean
public class MapBean implements Serializable {  

    private MapModel emptyModel;  

    private String title;  

    private double lat;  

    private double lng;

    private List<LatLng> coordenadas;

    public List<LatLng> getCoordenadas() {
        return coordenadas;
    }

    public void setCoordenadas(List<LatLng> coordenadas) {
        this.coordenadas = coordenadas;
    }

    public MapBean() {  
        emptyModel = new DefaultMapModel();  
    }  

    public MapModel getEmptyModel() {  
        return emptyModel;  
    }  

    public void addMessage(FacesMessage message) {  
        FacesContext.getCurrentInstance().addMessage(null, message);  
    }  

    public String getTitle() {  
        return title;  
    }  

    public void setTitle(String title) {  
        this.title = title;  
    }  

    public double getLat() {  
        return lat;  
    }  

    public void setLat(double lat) {  
        this.lat = lat;  
    }  

    public double getLng() {  
        return lng;  
    }  

    public void setLng(double lng) {  
        this.lng = lng;  
    }

    public void populateTable(List<LatLng> lista){
        lista.add(new LatLng(getLat(), getLng()));
    }

    public void addMarker(ActionEvent actionEvent) {  
        Marker marker = new Marker(new LatLng(lat, lng), title);  
        coordenadas = new ArrayList<LatLng>();
        emptyModel.addOverlay(marker);  

        addMessage(new FacesMessage(FacesMessage.SEVERITY_INFO, "Marker Added", "Lat:" + lat + ", Lng:" + lng));

        populateTable(coordenadas);

    }

}

これがビューで、素数の顔タグが付けられています。何が起こるか: マーカーが追加され、他のすべてが機能しますが、座標がテーブルに移動せず、理由がわかりません。まだここで試しています:

<!DOCTYPE html>  

  <html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:a4j="http://richfaces.org/a4j"
  xmlns:rich="http://richfaces.org/rich"
  xmlns:p="http://primefaces.org/ui"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:ui="http://java.sun.com/jsf/facelets">   

  <h:head>  
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">    </script>   
  </h:head>   
  <h:body>  
  <h:form prependId="false">  
 <p:growl id="messages" showDetail="true" />  
<p:gmap id="gmap" center="-3.12808313259846,-59.9729442607909" zoom="13" type="ROADMAP"   
style="width:1200px;height:600px"  
model="#{mapBean.emptyModel}"   
onPointClick="handlePointClick(event);"   
widgetVar="map" />  

     <p:dialog widgetVar="dlg" effect="FADE" effectDuration="0.5" fixedCenter="true"            closable="false" >  

    <h:panelGrid columns="2">  
        <h:outputLabel for="title" value="Title:" />  
        <p:inputText id="title" value="#{mapBean.title}" />  

        <f:facet name="footer">  
            <p:commandButton value="Add"   
                    actionListener="#{mapBean.addMarker}"   
                    update="messages"   
                    oncomplete="markerAddComplete()"/>  
            <p:commandButton value="Cancel" onclick="return cancel()"/>  
        </f:facet>  
    </h:panelGrid>  

    <h:inputHidden id="lat" value="#{mapBean.lat}" />  
    <h:inputHidden id="lng" value="#{mapBean.lng}" />  

</p:dialog>
<p:dataTable  value="#{mapBean.coordenadas}" var="latLng">
        <p:column headerText="Latitude">  
            <h:outputText value="#{mapBean.lat}" />  
        </p:column>  

        <p:column headerText="Longitude">  
          <h:outputText value="#{mapBean.lng}" />  
       </p:column>           
</p:dataTable>  

どうもありがとう。

4

1 に答える 1