【问题标题】:spring webflow 2 binding: how to populate <select> with enum valuesspring webflow 2 binding:如何用枚举值填充 <select>
【发布时间】:2012-05-31 20:22:58
【问题描述】:

我正在使用 spring webflow 2,并且遇到了提供用户注册表单的问题。用户必须插入姓名、姓氏……和他/她的国籍。这是模型类:

    @Component
    @Entity
    @Table (name = "personal_data")
    public class PersonalData implements Serializable {

@Id @GeneratedValue
@Column (name = "id")
private Integer id;

@Column (name = "name", nullable=false)
private String name;

@Column (name = "familyName", nullable=false)
private String familyName;

@Column (name = "nationality")
@Enumerated (EnumType.STRING)
private Nationality nationality;

    //getters and setters
    }

国籍所在:

public enum Nationality {
    Afghan, Albanian , Algerian , American , Andorran , Angolan , Antiguans , Argentinean , Armenian ...
}

我可以使用 spring webflow 绑定所有内容,并且表单可以正确显示。但我无法填写标签

jsp是:

<tr>
            <td><spring:message code="label.familyName"/>:</td>
            <td><form:input path="personalData.familyName" /> <form:errors path="personalData.familyName"/> </td>
        </tr>

            <td><spring:message code="label.name"/>:</td>
            <td><form:input path="personalData.name" /> <form:errors path="personalData.name"/> </td>
        </tr>

            <td><spring:message code="label.nationality"/>:</td>
            <td><form:select path="personalData.nationality"/> <form:errors path="personalData.nationality"/>

                </td>
        </tr>   

而spring webflow定义为:

    <var name="profile" class="com.tclouds.tpaas.models.user.UserProfile"/>

    <view-state id="registerProfile" view="profile/create1" model="profile">
        <transition on="submitRegistration" to="confirmData"/>
    </view-state>

你能告诉我如何填充

非常感谢

【问题讨论】:

标签: jsp select binding enums spring-webflow-2


【解决方案1】:

&lt;form:options /&gt; 标签中的“items”属性显示以下文档:

用于生成内部对象的 Collection、Map 或数组 “选项”标签。此属性是必需的,除非包含 select 的数据绑定属性是一个 Enum,在这种情况下 使用枚举的值。

所以你只需要在选择中添加&lt;form:options /&gt; 标签,而不需要任何属性。这将使选择填充枚举项作为文本和值。您还可以添加默认的“选择”选项。例如:

<form:select path="personalData.nationality">
    <option value="">Choose a nationality</option>
    <form:options />
</form:select>

该代码将产生以下 html 输出:

<select name="personalData.nationality">
    <option value="">Choose a nationality</option>
    <option value="Afghan">Afghan</option>
    <option value="Albanian">Albanian</option>
    <option value="Algerian">Algerian</option>
    <option value="American">American</option>
    <option value="Andorran">Andorran</option>
    <option value="Angolan">Angolan</option>
    <option value="Antiguans">Antiguans</option>
    <option value="Argentinean">Argentinean</option>
    <option value="Armenian">Armenian</option>
</select>

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    相关资源
    最近更新 更多