【问题标题】:spring binding formmultiselect弹簧绑定表单多选
【发布时间】:2011-01-26 09:04:23
【问题描述】:

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

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

    session.setAttribute("languages", languages);

AdvancedSearch 类有

字符串语言;

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

错误信息

HTTP 错误 500

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

Expected collection or sequence. list evaluated instead to

freemarker.template.SimpleScalar on spring.ftl 中的第 368 行第 12 列。 原因:

预期的集合或序列。列表 而是评估为 freemarker.template.SimpleScalar on spring.ftl 中的第 368 行第 12 列。

有问题的指令:

==> list list as nextInList [on line 368, column 5 in spring.ftl] in 用户指令 spring.formMultiSelect [在第 59 行,第 41 列中 高级搜索视图.ftl]

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

【问题讨论】:

    标签: java spring freemarker


    【解决方案1】:
    <@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>
    

    成功了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 2011-10-12
      • 2015-08-05
      相关资源
      最近更新 更多