我已经使用上面的代码来解决我的问题。
<select id="language-select" name="language-select" class="form-control input-lg" jsf:value="#{dashboardBean.language}" size="1">
<div value="#{dashboardBean.supportedLanguages}" var="language" jsfc="f:selectItems" itemValue="#{language.code}" itemLabel="#{dashboardBean.translate(language.name, null)}"></div>
</select>
SupportedLanguages.java
public enum SupportedLanguage implements TShopType {
UNKNOWN("un", "common.unknown"), DE("de", "common.supportedlanguage.de"), EN("en", "common.supportedlanguage.en"),
FR("fr", "common.supportedlanguage.fr"), NL("nl", "common.supportedlanguage.nl"), CS("cs",
"common.supportedlanguage.cs"), ES("es", "common.supportedlanguage.es"), IT("it",
"common.supportedlanguage.it");
private String code;
private String name;
private SupportedLanguage(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public static final SupportedLanguage getLanguage(String code) {
code = code.toLowerCase();
switch (code) {
case "de":
return SupportedLanguage.DE;
case "en":
return SupportedLanguage.EN;
case "fr":
return SupportedLanguage.FR;
case "nl":
return SupportedLanguage.NL;
case "cs":
return SupportedLanguage.CS;
case "es":
return SupportedLanguage.ES;
case "it":
return SupportedLanguage.IT;
default:
return SupportedLanguage.UNKNOWN;
}
}
public Converter getSupportedLanguageConverter() {
return new Converter() {
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
// TODO Auto-generated method stub
return (value == null) ? null : ((SupportedLanguage) value).getCode();
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
// TODO Auto-generated method stub
return (value == null) ? null : SupportedLanguage.getLanguage(value);
}
};
}