【问题标题】:Grails read from one domain to another domainGrails 从一个域读取到另一个域
【发布时间】:2017-04-04 07:43:44
【问题描述】:

我创建了 2 个域类

职责.groovy:

    class Duty {
               String username
               String duty
    }

用户.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" />

【问题讨论】:

    标签: grails grails-orm


    【解决方案1】:

    我认为您实际上并不需要为此目的自定义 taglib。 您可以使用简单的 g:select 来完成。

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

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

    如果您有任何问题,请询问。

    【讨论】:

    • 感谢 Pavel,它有效,但我的结果显示
    • "默认情况下,每个
    • 我添加了 optionKey,代码是
    • Pavel,我已经通过添加 optionValue 解决了这个问题。非常感谢!
    【解决方案2】:

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

        class User {
                   String username
        }
    
        class Duty {
                   User user
                   String duty
        }
    

    然后 Grails 会自动为您的 Duty 类搭建 GSP 视图,其中包括 User-dropdown

    【讨论】:

      猜你喜欢
      • 2013-05-18
      • 2012-04-25
      • 2015-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-26
      相关资源
      最近更新 更多