Grails 如何将整数(在数据库中)映射到字符串(在视图中)
我有一个域类:Grails 如何将整数(在数据库中)映射到字符串(在视图中),grails,gorm,grails-domain-class,Grails,Gorm,Grails Domain Class,我有一个域类: class MyUser { .. int sex int qualification int occupation .. } 假设我要约束这些整数类别,例如: occupation : [0:"not occupied", 1:"architect", 2:"student", 3:"policeman" and so on..] 我希望在数据库中显示整型值,并在视图中显示整型的字符串表示形式(是否可以自动构建此行为?) 有没有一种方法可以用grails的方式快速实
class MyUser {
..
int sex
int qualification
int occupation
..
}
假设我要约束这些整数类别,例如:
occupation : [0:"not occupied", 1:"architect", 2:"student", 3:"policeman" and so on..]
我希望在数据库中显示整型值,并在视图中显示整型的字符串表示形式(是否可以自动构建此行为?)
有没有一种方法可以用grails的方式快速实现这一点
谢谢 我建议用一个对象来表示职业,就像这样
class MyUser {
...
int sex
int qualification
Occupation occupation
...
}
那么你的职业课会是这样的
class Occupation {
...
String name
...
}
public enum Occupation {
GEEK(0, 'Geek'),
NERD(1, 'Nerd'),
final int id;
final String name;
Occupation (int id, String name) {
this.id = id;
this.name = name;
}
}
class MyUser {
...
int sex
int qualification
int occupation
...
}
<g:select name="occupation" id="occupation"
from="${Occupation.values()}"
value="${fieldValue(bean: user, field: 'occupation')}"
optionKey="id"
optionValue="name"/>
但是如果您坚持使用枚举类型,您可以这样做
class Occupation {
...
String name
...
}
public enum Occupation {
GEEK(0, 'Geek'),
NERD(1, 'Nerd'),
final int id;
final String name;
Occupation (int id, String name) {
this.id = id;
this.name = name;
}
}
class MyUser {
...
int sex
int qualification
int occupation
...
}
<g:select name="occupation" id="occupation"
from="${Occupation.values()}"
value="${fieldValue(bean: user, field: 'occupation')}"
optionKey="id"
optionValue="name"/>
您的MyUser类希望这样
class Occupation {
...
String name
...
}
public enum Occupation {
GEEK(0, 'Geek'),
NERD(1, 'Nerd'),
final int id;
final String name;
Occupation (int id, String name) {
this.id = id;
this.name = name;
}
}
class MyUser {
...
int sex
int qualification
int occupation
...
}
<g:select name="occupation" id="occupation"
from="${Occupation.values()}"
value="${fieldValue(bean: user, field: 'occupation')}"
optionKey="id"
optionValue="name"/>
你们gsp会喜欢这样的东西
class Occupation {
...
String name
...
}
public enum Occupation {
GEEK(0, 'Geek'),
NERD(1, 'Nerd'),
final int id;
final String name;
Occupation (int id, String name) {
this.id = id;
this.name = name;
}
}
class MyUser {
...
int sex
int qualification
int occupation
...
}
<g:select name="occupation" id="occupation"
from="${Occupation.values()}"
value="${fieldValue(bean: user, field: 'occupation')}"
optionKey="id"
optionValue="name"/>
这未经测试,但应该有效。享受。如果您愿意,您也可以使用map并通过控制器查看……为什么您试图使用map而不是类来表示职业?是的;但对于性:我是否也应该为它做一个榜样?我认为最好在数据库上有一个整数direclty(出于性能原因),并在视图上显示男性或女性..这一级别的性能不是问题,您可以用自己的思维方式来深入研究。缓存将解决许多性能问题,映射实际上可能会变慢,因为它可能不受缓存控制。在出现性能问题时处理这些问题。