Jsf Primefaces数据表LazyDataModel创建新行
我有一个primefaces数据表,它使用LazyDataModel代替集合 我需要实现一个在表中创建新行的按钮(datatable中实际页面最后一行的空行) 我试着加上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
@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,您可能会遇到这个问题,它有一个解决方法:您的代码出了什么问题?你只是说你做了什么,而不是发生了什么。