【问题标题】:OptionValue in Grails Select with list of domain objectsGrails Select中的OptionValue与域对象列表
【发布时间】:2012-08-25 08:03:06
【问题描述】:

我对如何显示带有可选值的下拉菜单进行了一些研究。目前,我在下拉列表中有一个域对象(人)列表。它们显示为“名字姓氏”。

我想更改名称在选择中的显示方式。查看 g:select API,我发现我可以使用 optionValue 和 optionKey。我试过了,但无处可去。所以这是我当前的代码:

<g:select id="allPeople" name="allPeople" from="${dropdown}" />

我希望输出为“Last, First”。我试过这个:

<g:select id="allPeople" optionValue="${it?.last},${it?.first}" from="${dropdown}" name="allPeople" value="" >

【问题讨论】:

    标签: grails


    【解决方案1】:

    一个不错的方法是在您的域上添加一个临时 getter,然后将其用于 optionValue。

    class Person {
        String first
        String last
    
        static transients = ['lastFirst']
    
        String getLastFirst() {
            "$last, $first"
        }
    }
    

    然后

    <g:select name="allPeople" optionValue="${it.lastFirst}" from="${dropdown}"/>
    

    【讨论】:

    • 好电话 - 虽然我遇到了传递给视图的集合的问题。这是一个列表。但错误表明我无法在 null 对象上获取 lastFirst ..
    • 该错误似乎表明您的人员列表中有一个空对象。 it?.lastFirst 会让你安全地通过 NPE,但你应该首先看看为什么你有一个 null。
    【解决方案2】:

    试试这样:

    optionValue="${{it?.last+', '+it.first}}"
    

    这意味着你传递了一个构建你需要的东西的闭包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多