我有一个棘手的问题。我需要提交一份表格并用表格中的数据更新地图(只需点击一下),该数据刚刚提交。现在,它的作用是:提交的数据是最新的,但地图的数据来自最后一次调用。我们的想法是在完成之前以某种方式调用更新。
以下是代码:
<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>
答案 0 :(得分: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后执行脚本。