从actionListener更新primefaces数据表

时间:2016-05-14 15:03:08

标签: jsf primefaces datatable jsf-2.2

我有一个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听众但没有成功。

0 个答案:

没有答案