0

ユーザーが現在ログインしているユーザーと等しいドメインのすべてのインスタンスを取得しようとしています。現時点での私のコードは次のとおりです。

def list(Integer max) {
    params.max = Math.min(max ?: 10, 100)
    if (lookupPerson().username == "admin"){
         adminList(max)
    }
    else{

        def childList = []
        def i = 1
     Child.list().each(){
         if(Child.get(i).user.username == lookupPerson().username){
             def child = Child.get(i)
             childList.add(child)
         }
          i++
     }
        [childInstanceList: childList.list(params), childInstanceTotal: childList.count()]
    }


}

これにより、次のエラー No signature of method: java.util.ArrayList.list() is applied for argument types: (org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap) values: [[action:list が表示されます。 、controller:child、max:10]] 考えられる解決策: last()、first()、asList()、toList()、is(java.lang.Object)、wait()

これを行うためのより簡単でより良い方法があるに違いないと確信しています。何か案は?

4

4 に答える 4

1

あなたはおそらくあなたが求めていることを基準クエリで行うことができます:

def childList = Child.createCriteria().list(params) {
  user {
    eq('username', lookupPerson().username)
  }
}

ページ付けパラメータがある場合params、「合計」はとして使用可能になりますchildList.totalCount。個別に計算する必要はありません。

于 2012-09-13T12:15:16.347 に答える
0

ドメインクラスを追加してください。

とにかく、「else」ブランチは次のようにロックする必要があると思います。

Child.list().each {
    if( it.user.username == lookupPerson().person ) {
        childList.add( it )
    }

}
于 2012-09-13T12:22:36.143 に答える
0

Child および User クラスがある場合...なぜこれをしないのですか?...

class Child {
    //properties
    User user
}

class User {
   //properties

  def getChilds() {
     Child.findAllByUser(this)
  }
}

次に、コントローラー、サービス、ビューでこれを呼び出すだけです。

def user = User.findByUsername(params.username)
def childs = user.childs //or user.getChilds()
于 2012-09-13T14:26:08.933 に答える
0
def childList = Child.findByUser(lookupPerson.username)

また

def childList = Child.withCriteria {
    eq("user", lookupPerson)
}
于 2012-09-13T12:25:43.353 に答える