内 不完全是工作,只有最后一个 被处理( within not enti

2019-06-18 11:37发布

我会喜欢在同一页面编辑的项目列表。 每个项目应使用单独的形式进行编辑。 UI中的形式:我创建了啊重演。 最后提交表单时,才将用户输入应用到托管bean。 对于所有的其它形式中,用户输入不被施加到模型。

@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", "daffy@example.com"));                          
            customerList.add(new Customer("Bugs Bunny", "bugs@example.com"));       
            customerList.add(new Customer("Samity Sam", "sam@example.com"));
        }
        return customerList;
    }
    public String updateCustomer(Customer c) {
        logger.info("Updating: " + c.getName());
        return null;
    }
}

在视图中,我有

<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>

我搜索小时,没有任何解决方案。 会是怎样做到这一点的正确方法是什么? 我可以用一个单一的形式,并且使用的用户界面本事:它内重复。 但也有很多问题,我宁愿不走这条路线。 谢谢。

Answer 1:

这是在保存状态的一个bug <ui:repeat>中钻嘴鱼科。 有几个类似的问题报告http://java.net/jira/browse/JAVASERVERFACES等等问题2243 。

你已经基本上2种选择:使用另一个迭代组件(例如<c:forEach> <h:dataTable> <t:dataList><p:dataList>等),或由MyFaces的更换钻嘴鱼科(所述<ui:repeat>在这种结构正常工作在那里)。



文章来源: within not entirely working, only the last is processed