I have some facelet components and want to use them in a h:dataTable. My components containing some form elements like h:inputText, command buttons and so on. To avoid scrolling, I have placed them into a a4j:form.
Now in my h:dataTable loop I call these facelet components and want to have a list of inputText components for example. But every time, I typed in something, only the last input field called correct my setValue() method. All other input components dosn’t call the setter.
Here a very small example to imagine the problem:
The datatable
<h:dataTable value="myBackingBean.list" var="currentItem"> <h:column> <waffel:input item="#{currentItem}"/> </h:column> </h:dataTable>
The facelet component:
... <a4j:form> <h:inputText size="30" value="#{item.value}"/> <a4j:commandButton value="ok" action="#{item.applyValue}"/> </a4j:form> ...
To get this to work you have to place a a4j:region around the a4j:form!
... <a4j:region> <a4j:form> <h:inputText size="30" value="#{item.value}"/> <a4j:commandButton value="ok" action="#{item.applyValue}"/> </a4j:form> </a4j:region> ...
Now it works fine.