Пожалуйста, посмотрите на следующую форму. В частности, обратите внимание на элементы ajax и graphicImage. Элемент ajax встроен в selectOneMenu. Когда выбор меню изменяется, изображение соответственно обновляется. Обновление иногда вызывает «мерцание» (старое изображение исчезает, форма изменяется (сжимается), появляется новое изображение, форма возвращается к исходному размеру). Я предполагаю, что не мигание (мигание) является результатом скорости (или отсутствия таковой), с которой новое изображение извлекается из URL-адреса (сервер в другом месте в Интернете). Если не считать кэширование всех изображений локально, есть ли способ решить эту проблему? Заставить старое изображение оставаться на месте, пока новое изображение не будет готово? По крайней мере, помешать изменению размера формы?
<h:form rendered="#{orderController.addingNew}" styleClass="demo">
<fieldset>
<legend>New Order</legend>
<h:panelGrid columns="2">
<h:outputText value="Patient"></h:outputText>
<h:selectOneMenu validatorMessage="required" value="#{orderController.patientId}" onchange="submit()">
<f:selectItems value="#{orderController.patients}" />
</h:selectOneMenu>
<h:outputText value="Product"></h:outputText>
<h:selectOneMenu value="#{orderController.productId}">
<f:selectItems value="#{orderController.products}" var="product" itemValue="#{product.id}" itemLabel="#{product.name}" />
<f:ajax render="productImage" listener="#{orderController.productSelectionChanged}"/>
</h:selectOneMenu>
<h:graphicImage url="#{orderController.productImageUrl}" id="productImage"/>
</h:panelGrid>
<h:panelGroup>
<h:commandButton value="Save" action="#{orderController.save}" accesskey="s" styleClass="demo"/>
<h:commandButton value="Cancel" action="#{orderController.cancel}" accesskey="c" immediate="true" styleClass="demo"/>
</h:panelGroup>
</fieldset>
<h:outputText value=" " />
</h:form>