Для огромного проекта мне нужно создать несколько форм на веб-странице. Не могу вдаваться в подробности, но предположим, что у вас есть запрошенная структура списка форм; используя мохарра jsf 2.2.5
данный управляемый компонент:
@ManagedBean
@SessionScoped
public class Debug {
private final List<DebugBean> list;
public Debug() {
super();
this.list = new ArrayList<DebugBean>();
this.list.add(new DebugBean("label 1", "value 1"));
this.list.add(new DebugBean("label 2", "value 2"));
}
public String submit() {
LOGGER.info("list = " + this.list.toString());
return "";
}
public List<DebugBean> getList() {
return this.list;
}
}
Бин DebugBean прост, содержит две переменные: метку и значение, обе String, а также ее сеттер и геттер.
Теперь страница xhtml:
<h:body style="height: 100%">
<ui:repeat value="#{debug.list}" var="x">
<h:form>
<h:panelGrid columns="2">
<h:outputText value="#{x.label}" />
<h:inputTextarea value="#{x.value}" />
</h:panelGrid>
<h:commandButton action="#{debug.submit}" value="ok" />
</h:form>
</ui:repeat>
</h:body>
Проблема заключается в изменении первого значения. Когда я изменяю второй, регистратор дает мне новое значение, как и ожидалось. Но меняя первый, логгер выдает мне старый список, как будто бы я перезагрузил полную форму без каких-либо изменений. В чем здесь проблема и, что более важно: что я могу сделать, чтобы это заработало?