Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从javascript调用setterbean_Java_Javascript_Jquery_Jakarta Ee_Primefaces - Fatal编程技术网

从javascript调用setterbean

从javascript调用setterbean,java,javascript,jquery,jakarta-ee,primefaces,Java,Javascript,Jquery,Jakarta Ee,Primefaces,我已经搜索了很多时间,但没有找到。我想从jquery地址选择器中选择一个地址,该地址选择器使用GMAPAPI并绑定我的bean中的所有字段。自动补全和地址字段可以正常工作,但所有其他字段都不能为null或空字符串 这是我的密码: Javascript: <script> function initialize() { if (document.getElementById("map_form:panel:addresspicker_map")) {

我已经搜索了很多时间,但没有找到。我想从jquery地址选择器中选择一个地址,该地址选择器使用GMAPAPI并绑定我的bean中的所有字段。自动补全和地址字段可以正常工作,但所有其他字段都不能为null或空字符串

这是我的密码:

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已完全填充,但所有其他字段均为null或空。

出于安全原因,JSF和PrimeFaces在输入被禁用=true或readonly=true时不处理值

因此,为了实现您的场景,我建议您对每个禁用的输入使用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}"/>

 ...