Spring 4属性'items'必须是数组,Collection或Map

时间:2015-09-27 06:56:07

标签: java spring jsp spring-mvc

我在Spring 4中创建一个Combobox项时出现此错误。

java.lang.IllegalArgumentException: Attribute 'items' must be an array, a Collection or a Map
    org.springframework.web.servlet.tags.form.AbstractMultiCheckedElementTag.writeTagContent(AbstractMultiCheckedElementTag.java:234)
    org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:84)

...

我有POJO班Student

    public class Student {
        @Size(min=3, max=30)
        private String firstName;

        @Size(min=3, max=30)
        private String lastName;

        @NotEmpty
        private String sex;

        @DateTimeFormat(pattern = "dd/MM/yyyy")
        @Past @NotNull
        private Date dob;

        @Email @NotEmpty
        private String email;

        @NotEmpty
        private String section;

        @NotEmpty
        private String country;

        private boolean firstAttempt;

        @NotEmpty
        private List<String> subjects = new ArrayList<String>();
...

我在Controller中创建方法并使用@ModelAttribute

对其进行注释
@ModelAttribute("sections")
    public List<String> initializeSections() {
        List<String> sections = new ArrayList<String>();
        sections.add("Graduate");
        sections.add("Post Graduate");
        sections.add("Research");

        return sections;
    }

这是我的JSP:

...
<div class="row">
                <div class="form-group col-xs-12">
                    <label class="col-xs-3" for="section">Section</label>
                    <div class="col-xs-7">
                        <form:radiobuttons path="section" items="${sections}"/>
                        <div class="has-error">
                            <form:errors path="section" class="help-inline" />
                        </div>
                    </div>
                </div>
            </div>
...

当我跑步时,我收到错误信息。 如何解决?缺少什么?

3 个答案:

答案 0 :(得分:2)

  

回答✓

     

我找不到一件事,我必须添加这个isELIgnored="false"   根据 @JB Nizet 的指示打印出我的EL。如果你   从Maven创建webapp项目,您必须手动声明isELIgnored="false"

     

谢谢。

答案 1 :(得分:1)

您正在尝试生成多个单选按钮,以及运行时的值。 修改控制器代码如下,然后尝试。

@ModelAttribute("sections")
public Map<String, List<String>> initializeSections() {
    List<String> sections = new ArrayList<String>();
    sections.add("Graduate");
    sections.add("Post Graduate");
    sections.add("Research");

    Map<String, List<String>> sectionData = new HashMap<>();
    sectionData.put("sections", sections);

    return sectionData;
}

答案 2 :(得分:0)

<%@ page isELIgnored="false" %>

在jsp文件的顶部包含上述语句