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

时间:2017-04-04 07:43:44

标签: grails gorm

我创建了2个域类

Duty.groovy:

    class Duty {
               String username
               String duty
    }

User.groovy:

    class User {
               String username
    }

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

但是当我在我的gsp(在Duty域)文件中导入testApp.User并创建一个taglib来显示用户列表时,我的编译器显示没有这样的属性。我想问一下建议以最佳方式显示从我的Duty域到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" />

2 个答案:

答案 0 :(得分:1)

我认为你真的不需要为此目的定制taglib。 你可以用简单的g来做:选择。

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

您可以在grails docs中了解它:https://docs.grails.org/latest/ref/Tags/select.html

请询问您是否有任何问题。

答案 1 :(得分:1)

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

    class User {
               String username
    }

    class Duty {
               User user
               String duty
    }

然后Grails将使用Duty - 包含下拉列表自动搭建您的User课程的GSP视图