【问题标题】:how to display linked table value in list.gsp instead of id? Grails如何在 list.gsp 而不是 id 中显示链接表值?圣杯
【发布时间】:2016-12-17 06:59:27
【问题描述】:

所以我有两个相互链接的表, 在Create.gsp 我有一个下拉菜单显示另一个表中的值,当用户点击save 时,它会将这个值的Id 存储在数据库中, 但是我想显示值本身而不是列表 gsp 上的 id 可能吗?

我有两张桌子:

[Authors] - id - name

[Books] - id - title - author

在书籍表单(创建/编辑)中,我可以毫无问题地让“作者”字段显示作者姓名(来自作者的表而不是 id),但是当我查看 /list/ 视图时,它显示作者的id 而不是名称(正确,因为这是存储在DB 中的内容)。

【问题讨论】:

    标签: mysql grails grails-orm


    【解决方案1】:

    覆盖作者域中的toString 方法。像这样:

    String toString(){
        name
    }
    

    【讨论】:

    • 它到底是做什么的?我还是 grails 的初学者
    • 每次在视图中显示实例或使用println 时,Grails 都会创建一个可读字符串。它的默认toString 方法导致Domain:id。如果您想显示其他内容,您可以覆盖该方法并放置您自己的实现。如果您使用我的示例,println authorInstanceprintln authorInstance.name 都会显示作者姓名。
    • 另一个带有 Book 域的toString 示例是String toString{ "$title by $author" };因此,每次您展示一本书时,它都会向您展示“史蒂芬·金的作品”之类的内容。
    【解决方案2】:

    现在您有了列表 ID,因此您可以使用 OptionKey="id" 在 GSP 页面中显示值。

     // I guess your Value should be id here     
       <g:select name="author" from="${authors.list()}" optionKey="id" optionValue="author"
                  value="${author?.id}"
                  noSelection="['':'-- Select Author --']" />
    

    如果您将值存储在数据库中,您可以尝试以下代码。

           <g:select name="author" from="${recommendation.list()}" 
              value="${author}"
              noSelection="['':'-- Select Author --']" />
    

    【讨论】:

    • 实际上这种方式没有用,但我最终通过将变量添加到值来让它工作,所以这就是我在 List.gsp 感谢卡马尔的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 2022-11-29
    相关资源
    最近更新 更多