2014-04-09 18 views
0

我在很多時間搜索過,但沒有找到。我想從jquery地址選擇器中選擇一個地址,它使用gmap api並綁定我的bean中的所有字段。自動完成和地址字段正常工作,但所有其他字段不起作用(空字符串或空字符串)。從javascript調用setter bean

這裏是我的代碼:

的Javascript:

<script> 
    function initialize() { 
     if (document.getElementById("map_form:panel:addresspicker_map")) { 
      var addresspickerMap = $("#map_form\\:panel\\:addresspicker_map").addresspicker({ 
       regionBias: "fr", 
       reverseGeocode: true, 
       mapOptions: { 
        zoom: 4, 
        center: new google.maps.LatLng(46, 2), 
        scrollwheel: false, 
        mapTypeId: google.maps.MapTypeId.ROADMAP, 
        reverseGeocode: true 
       }, 
       elements: { 
        map: "#map", 
        lat: "#map_form\\:panel\\:lat", 
        lng: "#map_form\\:panel\\:lng", 
        street_number: '#map_form\\:panel\\:street_number', 
        route: '#map_form\\:panel\\:route', 
        locality: '#map_form\\:panel\\:locality', 
        administrative_area_level_2: '#map_form\\:panel\\:administrative_area_level_2', 
        administrative_area_level_1: '#map_form\\:panel\\:administrative_area_level_1', 
        country: '#map_form\\:panel\\:country', 
        postal_code: '#map_form\\:panel\\:postal_code', 
        type: '#map_form\\:panel\\:type' 
       } 
      }); 

      var gmarker = addresspickerMap.addresspicker("marker"); 
      gmarker.setVisible(true); 
      addresspickerMap.addresspicker("updatePosition"); 

      // Update zoom field 
      var map = $("#map_form\\:panel\\:addresspicker_map").addresspicker("map"); 
      google.maps.event.addListener(map, 'idle', function() { 
       $('#map_form\\:panel\\:zoom').val(map.getZoom()); 
      }); 
     } 

    } 
    ; 
</script> 

我的JSF頁面:

<p:tab id="address_site" title="Adresse du site"> 
    <h:panelGrid columns="2"> 
     <h:outputText value="Addresse" /> 
     <p:inputText onfocus="initialize();" id="addresspicker_map" value="#{contratsController.currentSiteCreate.address}"/> 
    </h:panelGrid> 
</p:tab> 
<p:tab id="address_details_site" title="Adresse détaillée"> 
    <h:panelGrid columns="2"> 
     <h:outputText value="Street Number" /> 
     <p:inputText id="street_number" disabled="true" value="#{contratsController.currentSiteCreate.street_number}"/> 
     <h:outputText value="Route" /> 
     <p:inputText id="route" disabled="true" value="#{contratsController.currentSiteCreate.route}"/> 
     <h:outputText value="Postal Code" /> 
     <p:inputText id="postal_code" disabled="true" value="#{contratsController.currentSiteCreate.postal_code}"/> 
     <h:outputText value="Locality" /> 
     <p:inputText id="locality" disabled="true" value="#{contratsController.currentSiteCreate.locality}"/> 
     <h:outputText value="District" /> 
     <p:inputText id="administrative_area_level_2" disabled="true" value="#{contratsController.currentSiteCreate.district}"/> 
     <h:outputText value="State/Province" /> 
     <p:inputText id="administrative_area_level_1" disabled="true" value="#{contratsController.currentSiteCreate.state_province}"/> 
     <h:outputText value="Country" /> 
     <p:inputText id="country" disabled="true" value="#{contratsController.currentSiteCreate.country}"/> 
     <h:outputText value="Lat" /> 
     <p:inputText id="lat" disabled="true" value="#{contratsController.currentSiteCreate.latitude}"/> 
     <h:outputText value="Lng" /> 
     <p:inputText id="lng" disabled="true" value="#{contratsController.currentSiteCreate.longitude}"/> 
     <h:outputText value="Zoom" /> 
     <p:inputText id="zoom" disabled="true" value="#{contratsController.currentSiteCreate.zoom}"/> 
     <h:outputText value="Type" /> 
     <h:inputText id="type" disabled="true" value="#{contratsController.currentSiteCreate.type}"/> 
     <h:outputText value="Map" /> 
     <div id="map"></div> 
    </h:panelGrid> 
</p:tab> 
<p:tab id="confirmation_site" title="Confirmation"> 
    <h:commandButton styleClass="btn btn-success btn-lg btn-block" actionListener="#{contratsController.addSite}" value="Ajouter" /> 
</p:tab> 

當我推的commandButton,contratsController.currentSiteCreate.address是吃得飽飽的,但所有其他字段爲空或空白。

回答

0

出於安全原因,當輸入爲disabled="true"readonly="true"時,JSF和PrimeFaces不處理值。

所以爲了做你的場景,我建議你對每個禁用的輸入使用JSF隱藏字段,這樣你的隱藏字段將保存值,而你的輸入只是爲了顯示。 您的頁面應該是這樣的:

<h:outputText value="Street Number" /> 
<p:inputText id="street_number" disabled="true" value=""/> 
<h:inputHidden id="street_number_hidden" value="#{contratsController.currentSiteCreate.street_number}" /> 

<h:outputText value="Route" /> 
<p:inputText id="route" disabled="true" value=""/> 
<h:inputHidden id="route_hidden" value="#{contratsController.currentSiteCreate.route}"/> 

... 
+0

非常感謝!有用 – Archi