1

我正在尝试将多选绑定到我的对象。表单已创建并且帖子可以正常工作,并且当我不选择任何内容时不会发生错误。如果我选择一种语言,则对象会获得语言值,但表格会中断。

        HashMap<String, String> languages = new LinkedHashMap<String, String>();
    languages.put("eng","english");
    languages.put("ger","german"); 

    session.setAttribute("languages", languages);

<@spring.formMultiSelect "advancedSearch.languages", 语言, " "/>

AdvancedSearch 类有

字符串语言;

并且它得到一个值“eng,rus”,但是在它得到一个值后表单不起作用。

错误信息

HTTP 错误 500

访问 /opac/advSearch 时出现问题。原因:

Expected collection or sequence. list evaluated instead to

freemarker.template.SimpleScalar 位于 spring.ftl 中的第 368 行第 12 列。造成的:

预期的集合或序列。list 在 spring.ftl 的第 368 行第 12 列上被评估为 freemarker.template.SimpleScalar。这

有问题的指令:

==> 列表列表为 nextInList [在第 368 行,spring.ftl 中的第 5 列] 在用户指令 spring.formMultiSelect [在第 59 行,在 advancedSearchView.ftl 中的第 41 列]

我认为问题在于我保存语言的方式。现在是字符串。我想我需要以其他方式持有它。我尝试了 String[] List 但无法正常工作。

4

1 回答 1

2
<@spring.bind "advancedSearch.languages"/>
<#assign selectedLangs = spring.status.value?default(" ")>
<select multiple="multiple" id="${spring.status.expression}" name="${spring.status.expression}"}>
    <#list languages?keys as value>
    <#if selectedLangs?contains(value) >
        <#assign isSelected = true>
    <#else>
        <#assign isSelected = false>
    </#if>
    <option value="${value?html}"<#if isSelected> selected="selected"</#if>>${languages[value]?html}
    </#list>
</select>

这行得通!

于 2010-03-11T16:16:19.700 回答