Tutorial :Recommended JSF 2.0 CRUD frameworks [closed]


Can somebody recommend any framework to facilitate CRUD development in JSF 2.0?

Aspects I value most:

  • As lightweight as possible; limited dependencies on third party libraries
  • Support for an evolving domain model
  • Limited need for repetitive coding; support for scaffolding and/or metaannotations

Any hints highly appreciated! Yours, J.


CRUD is indeed a piece of cake using JSF 2.0 provided standard facility: a @ViewScoped bean in combination with a <h:dataTable> basically already suffices. Here's a code example which is shamelessly copied from this article.


package com.example;    import java.io.Serializable;  import java.util.ArrayList;  import java.util.List;    import javax.annotation.PostConstruct;  import javax.faces.bean.ManagedBean;  import javax.faces.bean.ViewScoped;    @ManagedBean  @ViewScoped  public class Bean implements Serializable {        private List<Item> list;      private Item item = new Item();      private boolean edit;        @PostConstruct      public void init() {          // list = dao.list();          // Actually, you should retrieve the list from DAO. This is just for demo.          list = new ArrayList<Item>();          list.add(new Item(1L, "item1"));          list.add(new Item(2L, "item2"));          list.add(new Item(3L, "item3"));      }        public void add() {          // dao.create(item);          // Actually, the DAO should already have set the ID from DB. This is just for demo.          item.setId(list.isEmpty() ? 1 : list.get(list.size() - 1).getId() + 1);          list.add(item);          item = new Item(); // Reset placeholder.      }        public void edit(Item item) {          this.item = item;          edit = true;      }        public void save() {          // dao.update(item);          item = new Item(); // Reset placeholder.          edit = false;      }        public void delete(Item item) {          // dao.delete(item);          list.remove(item);      }        public List<Item> getList() {          return list;      }        public Item getItem() {          return item;      }        public boolean isEdit() {          return edit;      }        // Other getters/setters are actually unnecessary. Feel free to add them though.    }  


<!DOCTYPE html>  <html xmlns="http://www.w3.org/1999/xhtml"        xmlns:f="http://java.sun.com/jsf/core"        xmlns:h="http://java.sun.com/jsf/html">      <h:head>          <title>Really simple CRUD</title>      </h:head>      <h:body>          <h3>List items</h3>          <h:form rendered="#{not empty bean.list}">              <h:dataTable value="#{bean.list}" var="item">                  <h:column><f:facet name="header">ID</f:facet>#{item.id}</h:column>                  <h:column><f:facet name="header">Value</f:facet>#{item.value}</h:column>                  <h:column><h:commandButton value="edit" action="#{bean.edit(item)}" /></h:column>                  <h:column><h:commandButton value="delete" action="#{bean.delete(item)}" /></h:column>              </h:dataTable>          </h:form>          <h:panelGroup rendered="#{empty bean.list}">              <p>Table is empty! Please add new items.</p>          </h:panelGroup>          <h:panelGroup rendered="#{!bean.edit}">              <h3>Add item</h3>              <h:form>                  <p>Value: <h:inputText value="#{bean.item.value}" /></p>                  <p><h:commandButton value="add" action="#{bean.add}" /></p>              </h:form>          </h:panelGroup>          <h:panelGroup rendered="#{bean.edit}">              <h3>Edit item #{bean.item.id}</h3>              <h:form>                  <p>Value: <h:inputText value="#{bean.item.value}" /></p>                  <p><h:commandButton value="save" action="#{bean.save}" /></p>              </h:form>          </h:panelGroup>      </h:body>  </html>  

Further, Netbeans has some useful wizards to genreate a CRUD application based on a datamodel.


JSF 2.0 itself. CRUD is very easy to do with JSF alone - no need for any other framework. You need

  • 1 managed bean (annotated with @ManagedBean)
  • 2 xhtml pages (facelets) - one for list and one for edit/create
  • A <h:dataTable> with anedit link/button, by which you set the current row object in the managed bean (using action="#{bean.edit(currentRowObject)}"). (In JSF 1.2 this was achieved by <f:setPropertyActionListener>)
  • Action methods (void, with no arguments) to handle the operations
  • @PostConstruct to load the data initially.


I created this one to speed up process of jsf crud application creation: https://github.com/ignl/happyfacescrud Out of box search, lazy data table, viewing/editing, custom components that reduces code dramatically and of course flexible.


I found this article useful as well:

Conversational CRUD in Java EE 6


By Andy Gibson


I had the same problem as described: Creating as-fast-as-possible CRUD-App in JEE6.

Beautiful Generator found at: http://sourceforge.net/projects/jbizmo/

After defining (Graph-Editor!) your Business-Model/Domain-Model, JBizMo creates the database and a whole CRUD-App out of the Box.

  • i18n, JAAS, also supported
  • Views and Menus are generated
  • ... a bunch of parameters to define ...


I found an opensource crud generator for JSF+Primefaces


And also it generate crud for most of the frameworks http://minuteproject.wikispaces.com/

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Next Post »