簡體   English   中英

在中選擇默認布爾值 <form:select> 在SpringMVC中

[英]Selecting default Boolean value in <form:select> in SpringMVC

我在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;
    }
}

就像我說的,提交工作正常,但是當我創建這樣的控制器時,“電子郵件”字段填充為“ test@example.com”,但是selectbox選擇了第一個選項“ ---”

@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;
}

我還嘗試將jsp中的“ true”更改為$ {true}或TRUE或1,但沒有成功。 如果我使用${filterData.active}在jsp中回顯${filterData.active} ,則結果為true ,但未選擇適當的選項。 有人知道我在做什么錯嗎?

您可能需要使用表單選項標簽。

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

您沒有正確使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM