我有一个像这样的枚举
public enum CheckboxFeature {
Option1(" choose this"),
Option2(" or this"),
Option3(" maybe this"),
Option4(" lastly this");
@Getter
private final String text;
public static CheckboxFeature fromName(String v) {
for (CheckboxFeature c: CheckboxFeature.values()) {
if (c.name().equalsIgnoreCase(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}
这将四个选项显示为Web视图中的复选框
<form:checkboxes items="${features}" path="enabledFeatures" itemLabel="text" delimiter="<br/>"/>
如何翻译这些选项?我将fmt:message用于网络视图中的其余翻译。
我尝试过
Option1(" <fmt:message key=\"text.test\"/>"),
和
Option1(" ${option1}"),
与
<fmt:message key="text.select" var="option1"/>
.jsp中的。 它们都不起作用,因此似乎无法通过这种方式起作用。翻译字符串的正确方法是什么?理想情况下,使用已存在并在Servlet其余部分上正常工作的fmt:message和i18n资源(lang.properties文件)?
答案 0 :(得分:6)
最佳地,您从枚举中获取资源密钥,并进行查找。
public enum CheckboxFeature {
Option1("label.option1.key"),
Option2("label.option2.key"),
Option1("label.option3.key"),
Option2("label.option4.key");
private final String key;
[...]
我不知道如何在itemLabel
属性中嵌套l10n查找,所以我会写类似的东西:
<c:forEach items="Options.values()" var="current">
<form:checkbox path="selectedOptions" value="${current.name()}"/> <fmt:message key="${current.getKey()}"/>
</c:forEach>
答案 1 :(得分:0)
1,CheckboxFeature的添加方法如:
public static List<String> getAllCheckboxFeature(String v) {
return Arrays.asList(Option1.getText(),...Option4.getText());
}
2,比像这样使用jstl
<c:forEach items="${options}" var="option">
<input type="checkbox" ="${option}">
</c:forEach>