Я не знаю, является ли это лучшим подходом, но у вас может быть перечисление, чтобы сделать работу:
public enum SelectOptions{
ACTIVE(true, 'Active'),
INACTIVE(false, 'InActive')
Boolean optionValue
String name
SelectOptions(boolean optionValue, String name){
this.optionValue = optionValue
this.name = name
}
static getByName(String name){
for(SelectOptions so : SelectOptions.values()){
if(so.name.equals(name)){
return so;
}
}
return null;
}
static list(){
[ACTIVE, INACTIVE]
}
public String toString(){
return name
}
}
Добавьте экземпляр перечисления SelectOptions в свой домен:
class MyDomain {
SelectOptions selectOptions = SelectOptions.ACTIVE
//Other properties go here
static constraints = {
selectOptions(inList:SelectOptions.list())
//other constraints
}
}
Тогда в вашем представлении GSP:
<g:select
name="status"
from="${myDomainInstance.constraints.selectOptions.inList}"
value="${myDomainInstance.selectOptions}" />
В методе сохранения вашего контроллера вам нужно получить правильное перечисление из значения String, представленного представлением:
def save = {
SelectOptions selectOption = SelectOptions.getByName(params.status)
def myDomainInstance = new MyDomain(params)
myDomainInstance.selectOptions = selectOption
// proceed to save your domain instance
}