- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Spring 新品!我正在尝试动态翻译像性别这样的枚举,但我不知道如何翻译。假设我有一个性别对象...
public enum Gender { FEMALE, MALE; }
我有一个 Controller ,它将用它来填充 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 值,而是像我的 JSP 中英语中的 Male 和 Female 或西类牙语中的 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 动态收费 form:radiobuttons path="gender"items="${gender}"与 MALE FEMALE 并且我希望在它到达 JSP 之前对其进行翻译(换句话说) ,我不能使用属性同时翻译两个枚举,对吧?当我得到我的 POST Controller 的答案时,我想得到 MALE、FEMALE,但可能会显示 Hombre、Mujer(翻译)。谢谢
最佳答案
根据docs
1.12 Serialization of Enum Constants
Enum constants are serialized differently than ordinary serializable or externalizable objects. The serialized form of an enum constant consists solely of its name; field values of the constant are not present in the form. To serialize an enum constant, ObjectOutputStream writes the value returned by the enum constant's name method. To deserialize an enum constant, ObjectInputStream reads the constant name from the stream; the deserialized constant is then obtained by calling the java.lang.Enum.valueOf method, passing the constant's enum type along with the received constant name as arguments. Like other serializable or externalizable objects, enum constants can function as the targets of back references appearing subsequently in the serialization stream.
The process by which enum constants are serialized cannot be customized: any class-specific writeObject, readObject, readObjectNoData, writeReplace, and readResolve methods defined by enum types are ignored during serialization and deserialization. Similarly, any serialPersistentFields or serialVersionUID field declarations are also ignored--all enum types have a fixed serialVersionUID of 0L. Documenting serializable fields and data for enum types is unnecessary, since there is no variation in the type of data sent.
所以,如果 Enum刚刚被序列化,您必须将 Enum 名称更改为您想要的大小写(所有大写只是约定)。如果 Enum 刚刚转换为字符串,则 Enum 的作用就像一个类,因此您可以像这样重写 toString 方法。 (以及构造函数和值持有者)
public static enum GENDER {
MALE("Male", "Hombre"), FEMALE("Female", "Mujer");
GENDER (String en, String sp) {
en_value = en;
sp_value = sp;
}
private String en_value;
private String sp_value;
@Override
public String toString() {
return en_value;
}
public String toEnglish() {
return en_value;
}
public String toSpanish() {
return sp_value;
}
}
关于java - 如何在Spring中动态翻译Enum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44164274/
我不明白为什么这甚至可以编译。我尝试过不同的格式,它们似乎都有效。 为什么有一个 enum of enum of enum of.. 是合法的? interface I { enum E im
我有大型数据库(数百万行),我正在尝试为 2 个字段的数据类型做出最佳选择。我制作的大部分内容都是 varchar 或 INT。但是,我想知道 Enum 是否是最好的方法的 2 个字段。 字段 1第一
我是 C++ 新手,我想知道是否有人可以帮助我理解原因 enum difficulty { NOVICE, EASY, NORMAL, HARD, UNBEATABLE }; difficulty m
从 native 代码强制转换(在 C++/CLI 中)的正确方法是什么 enum到托管代码enum其中包含相同的 enum值(value)观?与使用 C# 的强制转换方式有什么区别,例如 (int)
我有以下枚举 [Flags] public enum WeekDays { Monday = 1, Tuesday = 2, Wednesday = 4, Thursd
我刚刚学习 Java 中的枚举。当我运行下面的代码时,我收到一个错误,我也在下面重现该错误。基本上,我的问题是:当我在枚举中定义一个方法,并且在该方法中我想检查枚举的值以便我可以根据该值执行某些操作时
我想要一些语法糖来打开 Enum .当然,一个if else块按预期工作: @enum Fruit apple=1 orange=2 kiwi=3 function talk1(fruit::Frui
我试图在 Enum.each 的函数内为变量设置一个值,但在循环结束时,变量为空,我不知道为什么会出现这种行为。 代码: base = "master" candidates = ["stream",
This question already has answers here: Is there a way to use existing structs as enum variants? (2个
我想让 Java 中的枚举器具有其他枚举作为属性。 public enum Direction { Up(Down), Down(Up), Left(Right), R
我有一个包含两种不同可能“类型”的枚举和一个可以返回其中任何一种的函数,封装在 Option 中: enum Possibilities { First(i32), Second(St
我刚刚注意到 pyhton 中 Enum+defaultdict 的一个非常奇怪的行为。我定义了一个这样的枚举,它收集了一些默认词典: from enum import Enum from colle
我想在运行时从配置文件生成一些类型。为简单起见,假设我已经将数据加载为 Python 字典: color_values = dict(RED = 1, YELLOW = 2, GREEN = 3) 我
我想创建一个方法,在传入参数的任何枚举类上实现 valueOf(并包装一些专门的错误/缺失名称代码)。所以基本上,我有几个枚举,例如: enum Enum1{ A, B, C } enum Enum2
我有一个user数据库表: CREATE TABLE IF NOT EXISTS `user` ( `user_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
这是我的 JPA @Repository,在这里我们可以得到 list与 findByFullNameContaining(String query) - 通过在查询中提供 fullName 的子字符
(也在这里打开了一个问题:https://github.com/square/moshi/issues/768 但被要求打开一个stackoverflow问题)我正在编写一个通用适配器来转换带有枚举值
请帮助找到以下情况的最佳方法: 有一个表,大约有 20 列。 每列都有自己的短名称、全名称和类型(数字或字符串)。 每个列类型都可以有自己的运算符 - 例如,字符串 - 包含、等于;数字 - 更多、更
如果我在 python 中按功能创建了 enum.Enum(本例中为 3.7),如何从中检索类的名称? import enum def print_the_enum_class_name(some_e
我正在编写一个与第 3 方程序交互的程序。这个第 3 方程序允许用户制作可以运行在第 3 方程序中进行的步骤记录的按钮。 但! 这些按钮还可以运行用户定义的批处理文件。因此,我使用此功能通过创建文件并
我是一名优秀的程序员,十分优秀!