在SpringMVC中选择<form:select>中的默认布尔值</form:select>

时间:2014-07-08 07:32:53

标签: java jsp spring-mvc

我在Spring MVC中遇到问题。选择表单中的内容并提交表单非常有效,选择非布尔值的默认值也可以,但我在选择布尔值的默认值时遇到问题。

我的jsp文件看起来像这样:

<form:form commandName="filterData" id="user_filter_form" action="${listUrl}" method="POST">
    <form:label path="active">Active</form:label><br/>
    <form:select path="active">
        <option value="">--</option>
        <option value="true">Yes</option>
        <option value="false">No</option>
    </form:select>

    <form:label path="email">E-mail</form:label><br/>
    <form:input path="email" type="search"/>

    <button class="b not-ui" type="submit" style="margin-right: 25px">Search</button>
</form:form>

模型对象是这样的:

public class UserFilterData {
    private Boolean active;
    private String email;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Boolean getActive() {
        return active;
    }

    public void setActive(Boolean active) {
        this.active = active;
    }
}

正如我所说,提交工作正常,但是当我创建这样的控制器时,&#34;电子邮件&#34;字段填充了&#34; test@example.com" ;,但是selectbox选择了第一个选项&#34; ---&#34;

@RequestMapping(value = "/filter")
public String filterAction(Model model) {
    UserFilterData data = new UserFilterData();
    data.setEmail("test@example.com");
    data.setActive(Boolean.TRUE);
    model.addAttribute("filterData", data);
    return "users/index;
}

我也试过改变&#34; true&#34;在我的jsp到$ {true}或TRUE或1,但没有任何成功。如果我使用${filterData.active}在jsp中回显filterData,则结果为true,但未选择适当的选项。有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:3)

您可能需要使用表单选项标记。

<form:option value="true" label=""/>
<form:option value="false" label=""/>

答案 1 :(得分:2)

您没有正确使用Spring标签。

您可以更改代码的一种简单方法是:

<form:select path="active">
     <form:option value="">--</option>
     <form:options items="${activeValues}" itemLabel="active" itelLabel="active" >
</form:select>


@RequestMapping(value = "/filter")
public String filterAction(Model model) {
    UserFilterData data = new UserFilterData();
    data.setEmail("test@example.com");
    data.setActive(Boolean.TRUE);
    model.addAttribute("filterData", data);
    model.addAttribute("activeValues", Lists.newArrayList("yes", "no"));
    return "users/index;
}

您使用标记的方式,Spring不知道何时将selected值添加到呈现的HTML option