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.
This is a bug in JSF and will be fixed. See:
https://64.74.196.157/jira/browse/RF-5773
and
https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=928
Kommentar von Andreas — Juni 3, 2009 @ 11:04 vormittags |