java - Thymeleaf 下拉列表未填充

标签 java html drop-down-menu dictionary thymeleaf

我有一个简单的枚举,其中包含各种区域设置:

public enum LocaleEnum {
en_US,es_MX;

private static EnumMap<LocaleEnum, String> map = new EnumMap<LocaleEnum, String>(LocaleEnum.class);

// Pre-load the descriptive values.  Will pull the descriptive value from a property file later.
static {
    String desc = "English";
    for (LocaleEnum locale : LocaleEnum.values()) {
        map.put(locale, desc);
        desc = "Espanol";
    }
}

public static EnumMap<LocaleEnum, String> getMap() {
    return map;
}

}

然后我在模型上有一个方法将 EnumMap 传递到 View :

public EnumMap<LocaleEnum, String> getLocales() {
    EnumMap<LocaleEnum, String> map = LocaleEnum.getMap();
    return map;
}

我现在尝试使用 Thymeleaf 在下拉列表中显示这些值:

<select th:field="*{locales}">
    <option value="NONE">---- Select ----</option>
    <option th:each="locale : ${locales}"
            th:value="${locale.key}"
            th:text="${locale.value}">Englishy</option>
</select>

我在下拉列表中看到“---- 选择 ----”。在 Debug模式下,我看到 getLocales() 方法与 EnumMap 中的值一起被调用。

但是,下拉列表中没有其他内容。我一直将我的实现与其他各种实现进行比较,但我没有看到我的失败。所有的想法都非常受欢迎。谢谢。

最佳答案

这是一个可以更有效地使用枚举的解决方案。我明白为什么你使用 map ,这样你就可以传递整个集合,但有一个更好的方法使用 .values() 见下文

public enum LocaleEnum
{
    en_US("en_US", "English"), es_MX("es_MX", "Espanol");

    private final String locale;
    private final String desc;

    LocaleEnum(String locale, String desc)
    {
         this.locale = locale;
         this.desc = desc;
    }

    public String getLocale()
    {
        return locale;
    }

    public String getDesc()
    {
        return desc;
    }
}

然后更改将枚举添加到模型的方法。注意 .values() 是返回数组的枚举的静态方法。

public LocaleEnum getLocales()
{
    return LocaleEnum.values();
}

那么你的 thymeleaf 页面看起来就像这样

<select th:field="*{locales}">
    <option value="NONE">---- Select ----</option>
    <option th:each="locale : ${locales}"
            th:value="${locale.getLocale()}"
            th:text="${locale.getDesc()}">Englishy</option>
</select>

关于java - Thymeleaf 下拉列表未填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25417504/

相关文章:

Java - 循环遍历数据库记录的有效方法

javascript - 如何将 VBScript 字符串传递为我的 HTML 输入框中的默认值?

javascript - jQuery 下拉菜单在页面调整大小后导致无限循环

html - 在网站内容上方定位一个 Div,使用位置 :relative

java - JAVA中秒转换为W,D,H,M格式

java - 将 java hashmap 转换为 scala map

java - 使用 spring 处理请求/响应中的非表单字段的正确方法?

javascript - onClick 不会启动函数

html - 如何在 <a href> 标签下对齐多个图像?

django - 如何从django下拉框中获取值?