Я использую функциональность EL 2.2 (с Tomcat 7) для передачи параметров (в данном случае, целых элементов) со страницы JSF бэк-компоненту.Это оказывается очень удобным, но я сталкиваюсь с гигантской проблемой, когда список элементов изменяется другим пользователем между обновлениями страницы.Вот пример кода, который поможет вам понять, что я имею в виду:
JSF-страница:
<ui:repeat var="item" value="#{myBackingBean.listOfItems}">
<h:panelGrid columns="3">
<h:outputText value="#{item.name}" />
<p:commandLink value="(Change name to foo)" action="#{myBackingBean.changeNameToFoo(item)}" />
<p:commandLink value="(Delete this item)" action="#{myBackingBean.deleteThisItem(item)}" />
</h:panelGrid>
</ui:repeat>
MyBackingBean.java:
public void changeNameToFoo(Item i) {
i.setName("foo");
}
public void deleteThisItem(Item i) {
i.remove();
}
Моя ситуация такова: Скажите listOfItemsвозвращает список из пяти Предметов с именами [1, 2, 3, 4, 5].Два разных пользователя загружают эту страницу одновременно.Пользователь А сразу удаляет пункт 2 и теперь видит [1, 3, 4, 5].Пользователь B, который все еще видит все пять элементов, затем пытается изменить имя элемента 3 на foo.Когда его страница обновляется, он теперь видит [1, 3, foo, 5].Поскольку пользователь, которого он даже не знал об удалении второго элемента в списке, был изменен совершенно другой элемент, чем тот, на который он нажал.
Я что-то упустил, или это действительно проблема с показом, когда несколькопользователи вводят картинку?
Спасибо!