AJAX - DataTable
In this example, datatable is updated with ajax.
Source
<h:form id="form">
<p:growl showDetail="true" />
<p:panel header="New Book">
<h:panelGrid columns="2">
<h:outputLabel value="Title :" for="txt_title"></h:outputLabel>
<p:inputText id="txt_title" value="#{createBookBean.book.title}" required="true" label="Title"/>
<h:outputLabel value="Author :" for="txt_author"></h:outputLabel>
<p:inputText id="txt_author" value="#{createBookBean.book.author}" required="true" label="Author"/>
</h:panelGrid>
</p:panel>
<p:commandButton value="Add" action="#{createBookBean.createNew}" update="@form" style="margin:10px 0" id="btnAdd"/>
<p:dataTable value="#{createBookBean.books}" var="book" id="bookTable">
<p:column>
<f:facet name="header">
<h:outputText value="Title" />
</f:facet>
<h:outputText value="#{book.title}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Author" />
</f:facet>
<h:outputText value="#{book.author}" />
</p:column>
</p:dataTable>
</h:form>
package org.primefaces.examples.view;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.primefaces.examples.domain.Book;
import org.primefaces.examples.service.BookService;
import org.primefaces.examples.service.BookServiceImpl;
public class CreateBookBean {
private Book book = new Book();
private List<Book> books = new ArrayList<Book>();
private BookService bookService = new BookServiceImpl();
public void createNew() {
if(books.contains(book)) {
FacesMessage msg = new FacesMessage("Dublicated", "This book has already been added");
FacesContext.getCurrentInstance().addMessage(null, msg);
} else {
books.add(book);
bookService.saveBook(book);
book = new Book(); //reset form
}
}
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
public List<Book> getBooks() {
return books;
}
}
