我有一个primefaces数据表,在那里我添加了一个空行到最后。我想在修改最后一行时自动添加一个新的空行。我将逻辑放在onRowEdit侦听器上,但是数据表没有使用新的空行更新。 (使用单独的命令按钮它可以工作,但我想自动完成)
<p:dataTable id="categoryTable" var="category" value="#{categoryController.categories}" editable="true">
<p:ajax event="rowEdit" listener="#{categoryController.onRowEdit}" />
<p:ajax event="rowEditCancel" listener="#{categoryController.onRowCancel}" />
<p:column headerText="Category" sortBy="#{category.name}">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{category.name}" />
</f:facet>
<f:facet name="input">
<p:inputText id="categoryName" value="#{category.name}" style="width:96%" />
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
@Named("categoryController")
@ViewScoped
public class CategoryController {
private List<Category> categories;
@EJB
CategoryEjb categoryEjb;
@PostConstruct
public void init() {
categories = categoryEjb.getAllCategory();
//add new row
categories.add(new Category());
}
public void onRowEdit(RowEditEvent event) {
Category category = (Category) event.getObject();
if (categories.indexOf(category) == categories.size()-1) {
categoryEjb.addCategory(category);
//add new row
categories.add(new Category());
} else {
categoryDao.editCategory(category);
}
}
...
}
我尝试将update="categoryForm:categoryTable"
添加到<p:ajax event="rowEdit">
或
RequestContext context = RequestContext.getCurrentInstance();
context.update("categoryForm:categoryTable");
到onRowEdit
听众但没有成功。