0

私は現在Grailsプロジェクトに取り組んでおり、SpringSecurityドメインモデルからオブジェクトの選択リストを表示する最良の方法を知りたいです。

選択リストを作成する方法は知っていますが、grails内でそのドメインのオブジェクトを取り込むための最良の方法を見つけたいと思っています。「 user.list(params) 」のようなものを呼び出してそれをビューに渡すことを考えていたので、そのドメイン内の定義済みオブジェクトにアクセスできましたが、それが最善の方法であるかどうか、またはそれが可能かどうかは100%わかりません。そのように行われるのですか?

前もって感謝します

編集.....

コントローラに次のカスタムモデルを設定しています。

class UserModel {
           String username
           String firstName
           String lastName

           def email = User.email.list()
           String[] emails = email

           static constraints = {
                username blank: false
                firstName blank: false
                lastName blank: false

           }
}

次に、このビューのインデックスページが初期化されると、これを渡します。

[model: new UserModel(copy)]

そして最後に私はこれを持っています:

<g:select name="emails" from="${model.emails}"

アプリケーションを実行すると、次のエラーが発生します。

No signature of method: grails.plugins.springsecurity.ui.UserModel.propertyMissing() is applicable for argument types: () values: [] Possible solutions: propertyMissing(java.lang.String)

誰かがこれを手伝ってくれますか?ありがとう

4

2 に答える 2

0

あなたのアプローチは絶対に正しいように見えます。コントローラアクションでは、モデルにデータを入力します。

def listUsers = {
    [ 'users': Users.list( params ) ]
}

ビューでは、リストボックスにデータを入力するためにモデルを使用します。

<g:select name="users" from="${ users }" />

あなたの問題は非常に単純に見えるので、私は質問の背後にある考えを正しく持っていることを願っています:-)

于 2012-10-08T18:37:21.313 に答える
0

私はこれに一生懸命取り組んでおり、私が抱えていた問題の解決策を実装しました、そしてそれはすべてうまくいきます。以下は、問題のビューのコントローラーにあるものです。

def index = {
        [userList: Users(), command: new RegisterCommand(copy)]
    }

protected List Users() {
        lookupUserClass().list()
    }

List Usersは、以下に示す拡張クラスから別の関数を呼び出します。

protected Class<?> lookupUserClass() {
        grailsApplication.getDomainClass(lookupUserClassName()).clazz
    }

次に、このビューは、選択リストに表示したいアイテムのリストをレンダリングします。

<g:select name="emails" from="${userList.emails}" />

一意の値を探している場合にも、これを行うことができます。

<g:select name="emails" from="${userList.emails.unique()}" />

ありがとう

于 2012-10-09T12:22:45.840 に答える