推荐的JSF 2.0 CRUD框架

时间:2010-07-05 14:48:34

标签: java jsf jsf-2 crud

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

方面我最重视:

  • 尽可能轻巧; 对第三方库的有限依赖
  • 支持不断发展的域模型
  • 重复编码的需求有限;支持脚手架和/或元注释

任何提示都非常感谢! 此致, 学家

6 个答案:

答案 0 :(得分:47)

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

Bean:

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 some useful wizards基于数据模型生成CRUD应用程序。

答案 1 :(得分:8)

JSF 2.0本身。 CRUD很容易单独使用JSF - 不需要任何其他框架。你需要

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

答案 2 :(得分:5)

我创建了这个来加快jsf crud应用程序创建的过程:https://github.com/ignl/happyfacescrud 开箱即用搜索,懒惰数据表,查看/编辑,自定义组件,可以显着减少代码,当然也是灵活的。

答案 3 :(得分:3)

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

Java EE 6中的对话CRUD

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

Andy Gibson

答案 4 :(得分:2)

我遇到了与上述问题相同的问题:在JEE6中尽可能快地创建CRUD-App。

Beautiful Generator位于:http://sourceforge.net/projects/jbizmo/

定义(Graph-Editor!)您的业务模型/域模型后,JBizMo创建了数据库和整个CRUD-App。

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

答案 5 :(得分:1)

我找到了一个用于JSF + Primefaces的开源crud生成器

http://minuteproject.wikispaces.com/Primefaces

此外,它还会为大多数框架生成问题http://minuteproject.wikispaces.com/