2015-09-24 136 views
0

下面是我的问题的布局。我有一个位置,公司和用户域。我试图让管理员使用g:select标签选择新用户的位置。我想有它产生这种HTML:Grails选择标签修改

<select name="location" id="location"> 
    <option value="1">Company Name - City 1</option> 
    <option value="2">Company Name - City 2</option> 
    <option value="3">Company Name - City 3</option> 
    <option value="4">Company Name - City 4</option> 
    ... 
</select> 

我目前正与

<g:select name="location" 
      from="${locations}" 
      optionKey="id" 
      optionValue="${{it.company.name + ' - ' + it.city}}"/> 

做到这一点,这成功保存的选择,但是当我去编辑同一个用户,它会自动跳到默认值为Company Name - City 1,管理员必须重新选择所需的选项。如何修改我的g:select以解决此问题?

回答

1

您需要使用g:selectvalue属性设置所选值。沿着这些线:

<g:select name="location" 
    value="${user?.location?.id}" 
    from="${locations}" 
    optionKey="id" 
    optionValue="${{it.company.name + ' - ' + it.city}}"/> 
+0

Ferris Bueller你是我的英雄。作为一个便笺,我已经看到很多'''的使用,并且不知道它的含义。 '$ {user?.location?.id}'和'$ {user.location.id}'有什么区别? – mjswartz

+1

在Groovy中,访问属性时点之前的问号是空的安全检查。意思是说,如果你想尝试获取'user.location.id'的值并且'location'属性为null,那么你会得到一个NPE(空指针异常)。但是,在Groovy中使用问号避免了这一点。 –

+0

我一直在做一堆''来处理这些。 * facepalm *这会让我的生活变得轻松许多,而且我的代码更容易阅读和维护。非常感谢你! – mjswartz