Jsf Primefaces数据表LazyDataModel创建新行

Jsf Primefaces数据表LazyDataModel创建新行,jsf,primefaces,datatable,lazydatamodel,Jsf,Primefaces,Datatable,Lazydatamodel,我有一个primefaces数据表,它使用LazyDataModel代替集合 我需要实现一个在表中创建新行的按钮(datatable中实际页面最后一行的空行) 我试着加上 @Component("table") @Scope("session") public class TablaPaginada implements Serializable { private LazyDataModel<User> users; @PostConstruct priva

我有一个primefaces数据表,它使用LazyDataModel代替集合

我需要实现一个在表中创建新行的按钮(datatable中实际页面最后一行的空行)

我试着加上

@Component("table")
@Scope("session")
public class TablaPaginada implements Serializable {
    private LazyDataModel<User> users;
    @PostConstruct
    private void init() {
        usuarios = new LazyDataModel<User>() {
            private static final long serialVersionUID = 8885722005055879976L;
            @Override
            public List<User> load(int first, int pageSize, String sortField,
                    SortOrder sortOrder, Map<String, Object> filters) {
                List<User> data = getUsers(first, pageSize, sortOrder, filters);
                return data;
            }
        };
        users.setRowCount(totalRowUsers());
    }
    public void newRow() {
        //I would do this if it was List instead LazyDataModel
        //this.users.add(new User());
        users.getWrappedData().add(new User()); //this does not work.
    }
}
@组件(“表”)
@范围(“会议”)
公共类TablaPaginada实现了可序列化{
私人懒散数据模型用户;
@施工后
私有void init(){
usuarios=新的LazyDataModel(){
私有静态最终长serialVersionUID=8885722005055879976L;
@凌驾
公共列表加载(int first,int pageSize,String sortField,
排序器(排序器、映射过滤器){
列表数据=getUsers(第一个、页面大小、排序器、过滤器);
返回数据;
}
};
setRowCount(totalRowUsers());
}
公共无效新行(){
//如果它是List而不是LazyDataModel,我会这么做
//this.users.add(new User());
users.getWrappedData().add(new User());//这不起作用。
}
}
这将是xhtml代码:

<h:form>
<p:dataTable rowsPerPageTemplate="5,10,15" value="#{table.users}" var="user" paginator="true"
             paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
             rows="5" lazy="true">

    <p:column headerText="id" sortBy="#{user.id}" filterBy="#{user.id}">
        <h:outputText value="#{user.id}" />
    </p:column>
    <p:column headerText="name" sortBy="#{user.name}" filterBy="#{user.name}">
        <h:outputText value="#{user.name}" />
    </p:column>
    <p:column headerText="lastName" sortBy="#{user.lastName}" filterBy="#{user.lastName}">
        <h:outputText value="#{user.lastName}" />
    </p:column>
    <p:column headerText="money" sortBy="#{user.money}" filterBy="#{user.money}">
        <h:outputText value="#{user.money}" />
    </p:column>
</p:dataTable>
<p:commandButton value="new row" action="#{table.newRow()}" update="@form"/>
</h:form>

编辑:


我的代码不创建新行。

来自PF文档:


对于Lazy Datatable,您可能会遇到这个问题,它有一个解决方法:

您的代码出了什么问题?你只是说你做了什么,而不是发生了什么。