web-dev-qa-db-ja.com

推奨されるJSF 2.0 CRUDフレームワーク

誰かがJSF 2.0でのCRUD開発を容易にするためのフレームワークを推奨できますか?

私が最も重視する側面:

  • 可能な限り軽量。 limitedサードパーティライブラリへの依存
  • evolvingドメインモデルのサポート
  • 反復的なコーディングの必要性は限られています。足場および/またはメタ注釈のサポート

ヒントは高く評価されています!あなた、J.

30
Jan

CRUDは確かに、JSF 2.0が提供する標準機能を使用した簡単なものです:a @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アプリケーションを生成します。

47
BalusC

JSF 2.0自体。 CRUDはJSFだけで非常に簡単に実行できます。他のフレームワークは必要ありません。あなたは必要です

  • 1つの管理対象Bean(_@ManagedBean_で注釈)
  • 2 xhtmlページ(facelets)-1つはリスト用、もう1つは編集/作成用
  • _<h:dataTable>_とaneditリンク/ボタン。マネージドBeanの現在の行オブジェクトを設定します(action="#{bean.edit(currentRowObject)}"を使用)。 (JSF 1.2では、これは_<f:setPropertyActionListener>_によって実現されました)
  • 操作を処理するアクションメソッド(void、引数なし)
  • _@PostConstruct_最初にデータをロードします。
8
Bozho

Jsf crudアプリケーションの作成プロセスをスピードアップするためにこれを作成しました: https://github.com/ignl/happyfacescrud アウトオブボックス検索、遅延データテーブル、表示/編集、コードを削減するカスタムコンポーネント劇的にそしてもちろん柔軟です。

5
Ignas

この記事も役に立ちました:

Java EE 6の会話型CRUD

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

アンディ・ギブソン

3
Jan

私が説明したのと同じ問題がありました:JEE6で可能な限り高速のCRUDアプリを作成しています。

http://sourceforge.net/projects/jbizmo/ にある美しいジェネレーター

ビジネスモデル/ドメインモデルを(グラフエディター!)定義した後、JBizMoはデータベースとCRUDアプリ全体をボックスから作成します。

  • i18n、JAAS、またサポートされています
  • ビューとメニューが生成されます
  • ...定義する一連のパラメータ...
2
Michael Leitner

JSF + Primefaces用のオープンソースのクラッドジェネレーターを見つけました

http://minuteproject.wikispaces.com/Primefaces

また、ほとんどのフレームワークに対してクラッドを生成します http://minuteproject.wikispaces.com/

1
Sam