2011-10-19 7 views
2

私のモデルのCRUDモジュールのlist()関数をオーバーライドしようとしています。CRUD/list()関数をオーバーライドする方法は?遊びます!フレームワーク

Googleグループではthisが見つかりましたが、これは本質的に問題です。

は基本的に私はcertianカテゴリに基づいてリストをフィルタリングしたい、私はこれを試してみました:

CONTROLLER

public static void list(string category){ 
    List<Duty> object = Duty.getByCategory(category); 
    render(object); 
} 

MODEL

public static List<Duty> getByCategory(String category){ 
    List<Duty> result = Duty.find("select distinct d from Duty d join " + 
     "d.category c where c.name = ? order by d.name", category).fetch(); 
    return result; 
} 

は、私は次のエラーを取得する:

Template execution error

リストアクションをどのように上書きしますか?

ご協力いただければ幸いです。

答えて

3

コントローラを上書きしているのにテンプレートを上書きしているようです。 ()あなたはそれがレンダリングわかります

​​3210

あなたがより多くのパラメータを渡して、そしておそらく彼らはオプションではありません:CRUDリストメソッドのシグネチャは、あなたのそのわずかに異なる、this oneです。それらの値を提供してください。

1

あなたはCRUDリストメソッドをオーバーライドし、例えばどこに多くのパラメータを渡すフィルタを追加することができます

public static void list(int page, String search, String searchFields, String orderBy, String order) { 
    ObjectType type = ObjectType.get(getControllerClass()); 
    notFoundIfNull(type); 
    if (page < 1) { 
     page = 1; 
    } 
    String where = "nameAttribute =" + value; 

    List<Model> objects = type.findPage(page, search, searchFields, orderBy, order, where); 
    Long count = type.count(search, searchFields, where); 
    Long totalCount = type.count(null, null, where); 
    try { 
     render(type, objects, count, totalCount, page, orderBy, order); 
    } catch (TemplateNotFoundException e) { 
     render("CRUD/list.html", type, objects, count, totalCount, page, orderBy, order); 
    } 
} 
0

view(xtml)からそのオーバーライドメソッドを呼び出すようにしてください。

<form action="@{Controler.overrideList()}" method="POST"> 

、前のコードを使用して、where = "..."

に多くのパラメータを渡すフィルタを追加