<h: form> innerhalb von <ui: repeat> funktioniert nicht vollständig, nur das letzte <h: form> wird verarbeitet
Ich möchte eine Liste von Elementen auf derselben Seite bearbeiten. Jedes Element sollte mit einem separaten Formular bearbeitet werden. Ich erstelle ein h: form innerhalb von ui: repeat. Nur wenn das letzte Formular gesendet wird, wird die Benutzereingabe auf die verwaltete Bean angewendet. Bei allen anderen Formularen wird die Benutzereingabe nicht auf das Modell angewendet.
@ManagedBean
public class Controller {
Logger logger = Logger.getLogger("TestWeb");
private List<Customer> customerList;
public List<Customer> getCustomerList() {
if (customerList == null) {
customerList = new ArrayList<Customer>();
customerList.add(new Customer("Daffy Duck", "[email protected]"));
customerList.add(new Customer("Bugs Bunny", "[email protected]"));
customerList.add(new Customer("Samity Sam", "[email protected]"));
}
return customerList;
}
public String updateCustomer(Customer c) {
logger.info("Updating: " + c.getName());
return null;
}
}
In der Ansicht habe ich
<ui:repeat var="c" value="#{controller.customerList}">
<h:form>
<h3>Edit Customer</h3>
Name: <h:inputText value="#{c.name}"/><br/>
E-mail: <h:inputText value="#{c.email}"/><br/>
<h:commandButton value="Update"
action="#{controller.updateCustomer(c)}"/>
</h:form>
</ui:repeat>
Ich suche stundenlang ohne Lösung. Was wird der richtige Weg sein, um dies zu tun? Ich kann es hacken, indem ich ein einzelnes Formular und eine Benutzeroberfläche verwende: Wiederhole es. Aber das hat viele Probleme, und ich werde diesen Weg lieber nicht einschlagen. Vielen Dank.