我在很长一段时间里搜索过,但我找不到。我想从jquery地址选择器中选择一个地址,它使用gmap api并绑定我的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 :(得分: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}"/>
...