推荐的JSF 2.0 CRUD框架

有人可以推荐任何框架来促进JSF 2.0中的CRUD开发吗?

我最看重的方面:

  • 尽可能轻便; 对第三方库的依赖性有限
  • 支持演进的域模型
  • 有限的重复编码需求; 支持脚手架和/或metaannotations

任何提示高度赞赏! 你的,J.

CRUD确实是使用JSF 2.0提供的标准工具的一块蛋糕: @ViewScoped bean与<h:dataTable>基本上已经足够了。 这是一个无耻地从这篇文章复制的代码示例。

豆:

 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> 

此外,Netbeans还提供了一些有用的向导 ,用于根据数据模型对CRUD应用进行genreate。

JSF 2.0本身。 CRUD很容易与JSF做在一起 – 不需要任何其他的框架。 你需要

  • 1托pipebean(用@ManagedBean注释)
  • 2个xhtml页面(facelets) – 一个用于列表,一个用于编辑/创build
  • 一个带有edit链接/button的<h:dataTable> ,通过它可以在托pipebean中设置当前行对象(使用action="#{bean.edit(currentRowObject)}" )。 (在JSF 1.2中,这是通过<f:setPropertyActionListener>
  • Action方法( void ,无参数)来处理操作
  • @PostConstruct最初加载数据。

我创build了这个,以加快jsf crud应用程序创build过程: https : //github.com/ignl/happyfacescrud即时search,懒惰数据表,查看/编辑,自定义组件,大大减less代码,当然灵活。

我发现这篇文章也很有用:

Java EE 6中的会话CRUD

http://www.andygibson.net/blog/tutorial/pattern-for-conversational-crud-in-java-ee-6/

安迪·吉布森

我遇到了同样的问题:在JEE6中创build尽可能快的CRUD-App。

美丽的发电机发现: http : //sourceforge.net/projects/jbizmo/

定义(graphics编辑器!)您的业务模型/域模型后,JBizMo创build数据库和一个完整的CRUD应用程序。

  • i18n,JAAS,也支持
  • 视图和菜单生成
  • 一堆参数来定义…

我为JSF + Primefacesfind了一个开源的crud生成器

http://minuteproject.wikispaces.com/Primefaces

而且它也会为大多数框架产生不良影响http://minuteproject.wikispaces.com/