Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Thymeleaf下拉列表未填充_Java_Html_Drop Down Menu_Map_Thymeleaf - Fatal编程技术网

Java Thymeleaf下拉列表未填充

Java Thymeleaf下拉列表未填充,java,html,drop-down-menu,map,thymeleaf,Java,Html,Drop Down Menu,Map,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 pr

我有一个简单的枚举,它将包含各种地区:

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;
}
public EnumMap<LocaleEnum, String> getLocales() {
    EnumMap<LocaleEnum, String> map = LocaleEnum.getMap();
    return map;
}
<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>
public enum LocaleEnum{
en_US,es_MX;
私有静态EnumMap=newEnumMap(LocaleEnum.class);
//预加载描述性值。稍后将从属性文件中提取描述性值。
静止的{
字符串desc=“英语”;
for(LocaleEnum区域设置:LocaleEnum.values()){
map.put(区域设置,描述);
desc=“Espanol”;
}
}
公共静态EnumMap getMap(){
返回图;
}
}

然后,我在模型上有一个方法将EnumMap传递给视图:

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;
}
public EnumMap<LocaleEnum, String> getLocales() {
    EnumMap<LocaleEnum, String> map = LocaleEnum.getMap();
    return map;
}
<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>
public EnumMap getLocales(){
EnumMap map=LocaleEnum.getMap();
返回图;
}
我现在正试图使用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;
}
public EnumMap<LocaleEnum, String> getLocales() {
    EnumMap<LocaleEnum, String> map = LocaleEnum.getMap();
    return map;
}
<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>

----挑选----
英式
我在下拉列表中得到“----选择----”。在调试模式下,我看到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();
}
所以你的胸腺素页面看起来像

<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>

----挑选----
英式

这是一个更有效地使用枚举的解决方案。我明白了为什么要使用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();
}
所以你的胸腺素页面看起来像

<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>

----挑选----
英式

这是一个更有效地使用枚举的解决方案。我明白了为什么要使用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();
}
所以你的胸腺素页面看起来像

<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>

----挑选----
英式

这是一个更有效地使用枚举的解决方案。我明白了为什么要使用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();
}
所以你的胸腺素页面看起来像

<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>

----挑选----
英式
如何尝试使用
类型映射

地方性 如何使用
类型尝试映射

地方性 如何使用
类型尝试映射

地方性 如何使用
类型尝试映射

地方性
谢谢OhioCowboy&Wundwin我真的很感谢你在这方面的帮助

我终于明白我做错了什么。我所需要做的就是改变:

<option th:each="locale : ${locales}"

谢谢OhioCowboy&Wundwin我真的很感谢你的帮助

我终于明白我做错了什么。我所需要做的就是改变:

<option th:each="locale : ${locales}"

谢谢OhioCowboy&Wundwin我真的很感谢你的帮助

我终于明白我做错了什么。我所需要做的就是改变:

<option th:each="locale : ${locales}"

谢谢OhioCowboy&Wundwin我真的很感谢你的帮助

我终于明白我做错了什么。我所需要做的就是改变:

<option th:each="locale : ${locales}"


我认为jsp中绑定的
EnumMap
不是一个好主意,如何使用其他带有
字符串的映射?
Wundwin,我不确定我是否理解您对EnumMap的关注。你能解释一下你的担忧吗?由于这是我第一次使用EnumMap,我很想了解您认为在本例中使用EnumMap可能会遇到哪些问题。谢谢您的评论。我认为jsp中绑定的
EnumMap
不是一个好主意,如何使用其他带有
String
的映射?Wundwin,我不确定我是否理解您对EnumMap的关注。你能解释一下你的担忧吗?由于这是我第一次使用EnumMap,我很想了解您认为在本例中使用EnumMap可能会遇到哪些问题。谢谢您的评论。我认为jsp中绑定的
EnumMap
不是一个好主意,如何使用其他带有
String
的映射?Wundwin,我不确定我是否理解您对EnumMap的关注。你能解释一下你的担忧吗?由于这是我第一次使用EnumMap,我很想了解您认为在本例中使用EnumMap可能会遇到哪些问题。谢谢您的评论。我认为jsp中绑定的
EnumMap
不是一个好主意,如何使用其他带有
String
的映射?Wundwin,我不确定我是否理解您对EnumMap的关注。你能解释一下你的担忧吗?由于这是我第一次使用EnumMap,我很想了解您认为在本例中使用EnumMap可能会遇到哪些问题。谢谢你的评论。OhioCowboy,首先感谢你的回复。我实现了你的代码。我做了2个小改动来删除一些错误:1。将public LocalEnum getLocales()更改为public LocalEnum[]getLocales()2。改为。一旦我这样做了,它就运行了,但是下拉列表中的值仍然没有填充(除了“--Select--”之外)。还有什么想法吗?你确定模型是用LocaleEnum填充的吗?在公共LocalEnum[]getLocales()方法上方添加@modeldattribute(“locales”)?FFR:我已经替换了
th:each=“locale:${locales}
th:each=“locale