Grails 从一个域读取到另一个域

Grails read from one domain to another domain

我创建了 2 个域 class,即

Duty.groovy:

    class Duty {
               String username
               String duty
    }

User.groovy:

    class User {
               String username
    }

我已经在 Bootstrap.groovy 中分配了一些用户,我想创建一个职责列表功能来为用户分配职责。所以在我的职责列表中,它应该包含一个下拉列表,其中包含来自用户域的用户列表。

但是当我在我的 gsp(职责域)文件中导入 testApp.User 并创建一个标签库来显示用户列表时,我的编译器显示没有这样的 属性。我想征求有关将用户列表从我的职责域显示到用户域的最佳方式的建议?

这是其他代码: SelectUserTagLib.groovy

    import HR_System.User
    def userInstance = new User()
    def displayType = { attrs,body -> 
    def name = attrs.name 

    out << "<select id=\"${name}\" name=\"${name}\" require=\"\" >"
    out << "<g:each in='${userInstanceList}'' status='i' var='userInstance'>"
    out << "<option value=\"${name}\">${fieldValue(bean: userInstance, field: "username")}</option>"
    out << "</g:each>"
    out << "</select>"
}

_form.gsp:

    <name:displayType name="username" />

我认为您真的不需要为此目的自定义标签库。 您可以使用简单的 g:select.

<g:select name="user"
          from="${User.list()}"/>

您可以在 grails 文档中阅读:https://docs.grails.org/latest/ref/Tags/select.html

有问题请追问

如果您将模型调整为真正的领域模型,那么它看起来像:

    class User {
               String username
    }

    class Duty {
               User user
               String duty
    }

然后 Grails 会自动为您的 Duty class 构建 GSP 视图,其中包含 User-dropdown