春天新品!我正在尝试动态地翻译类似性别的枚举,但我找不到如何。假设我有一个性别对象......
public enum Gender { 女, 男; }
我有一个控制器,它会用它来填充jsp,就像这样....
@RequestMapping(value = "/edit-profile-about3", method = RequestMethod.GET)
public ModelAndView editProfileAbout3(ModelAndView modelAndView) {
SiteUser user = getUser();
Profile profile = profileService.getUserProfile(user);
Profile webProfile = new Profile();
webProfile.safeCopyFrom(profile);
List<Gender> gender = new ArrayList<Gender>(EnumSet.allOf(Gender.class));
modelAndView.getModel().put("gender", gender);
modelAndView.setViewName("app.editprofileabout3");
return modelAndView;
}
现在我想要显示的不是MALE和FEMALE大写字母,就像它们从Enum中显示的那样,但是像我的JSP中的男性和女性或Hombre和西班牙语中的Mujer :
<form:form modelAttribute="profile" class="sky-form" id="sky-form4">
<dl class="dl-horizontal">
<dt>Gender:</dt>
<dd>
<form:radiobuttons path="gender" items="${gender}" />
</dd>
</dl>
<button class="btn-u btn-u-default" type="button" value="Cancel">Cancelar</button>
<button class="btn-u" type="submit" name="submit" value="Save">Guardar</button>
</form:form>`
我该怎么办?我认为这不是属性国际化,因为jsp动态地收费形式:radiobuttons path =“gender”items =“$ {gender}”与MALE FEMALE我希望在它到达JSP之前进行翻译(换句话说) ,我不能同时使用属性来翻译两个枚举,对吧?当我得到我的POST控制器的答案时,我想得到MALE,FEMALE,但可能会显示Hombre,Mujer(翻译)。 感谢
答案 0 :(得分:-1)
根据docs
1.12 Enum常数的序列化
枚举常量的序列化与普通的可序列化不同 或可外部化的对象。枚举常量的序列化形式 仅由其名称组成;常量的字段值不是 出现在表格中。序列化枚举常量ObjectOutputStream 写入枚举常量名称方法返回的值。至 反序列化枚举常量,ObjectInputStream读取常量 来自流的名称;然后通过获得反序列化常数 调用java.lang.Enum.valueOf方法,传递常量的枚举 键入以及接收的常量名称作为参数。像其他人一样 可序列化或可外化的对象,枚举常量可以作为 随后出现在后面的参考目标 序列化流。
枚举常量序列化的过程不能 自定义:任何特定于类的writeObject,readObject, readObjectNoData,writeReplace和readResolve方法定义 在序列化和反序列化期间忽略枚举类型。 同样,任何serialPersistentFields或serialVersionUID字段 声明也被忽略 - 所有枚举类型都有一个固定的 serialVersionUID为0L。记录可序列化的字段和数据 枚举类型是不必要的,因为类型没有变化 发送的数据。
因此,如果Enum刚被序列化,则必须将Enum名称更改为所需的大小写(所有大写只是约定)。如果Enum刚刚转换为字符串,那么Enum就像一个类一样,所以你可以像这样覆盖toString方法。 (以及构造函数和值持有者)
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# skip below rule for IP addresses that start with 62.
RewriteCond %{REMOTE_ADDR} ^62\. [OR]
RewriteCond %{HTTP_HOST} ^62\.
RewriteRule ^ - [L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301,NE]
RewriteCond %{HTTP_HOST} ^(?!www\.)[^.]+\.site\.co\.il$ [NC]
RewriteRule .* /goin/$0 [L,NE]
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ goin/index.php?subdomain=$1 [L,QSA]