0

我有一个棘手的问题。我需要提交表单并使用刚刚提交的表单数据更新地图(单击)。现在,它的作用是:提交的数据是最新的,但地图的数据来自上次调用。这个想法是在 oncomplete 之前以某种方式调用更新。

这是代码:

<h:panelGroup layout="block" id="addressBlock" >            
        <h:panelGrid columns="2" columnClasses="geolabels, geoinputs" id="addressInputs">
            Straße <h:inputText styleClass="sidebar-input" value="#{search.searchContainer.geoCodeSearch.adresse}" /> 
            Plz <h:inputText styleClass="sidebar-input" value="#{search.searchContainer.geoCodeSearch.plz}" />
            Ort <h:inputText styleClass="sidebar-input" value="#{search.searchContainer.geoCodeSearch.ort}" />
        </h:panelGrid>      
        <p:commandLink styleClass="btn" value="#{messages['global.search']}" process="@this, addressInputs"
            action="#{search.searchContainer.geoCodeSearch.geoCode()}" update="geoCodeResult, addressBlock"
            oncomplete="updateMap('#{dataForMap}', true);" />   
</h:panelGroup>
4

1 回答 1

0

这是正常行为,#{dataForMap}在渲染时处理,而不是在更新时处理。

这应该可以解决问题:

<p:commandLink styleClass="btn" value="#{messages['global.search']}" process="@this, addressInputs" action="#{search.searchContainer.geoCodeSearch.geoCode()}" update="geoCodeResult, addressBlock, dataForMap" /> 

<h:panelGroup id="dataForMap">
    <h:panelGroup rendered="#{dataForMap ne null}">
        <script>
            updateMap('#{dataForMap}', true);
        </script>
    </h:panelGroup>
</h:panelGroup>

#{dataForMap}更新并在更新 DOM 后执行脚本。

于 2013-06-03T08:32:44.770 回答