jsp - spring webflow 2绑定(bind): how to populate <select> with enum values

标签 jsp select binding enums spring-webflow-2

我正在使用 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 绑定(bind)所有内容,并且表单显示正确。但我无法填写标签

该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>

你能告诉我如何填充

非常感谢

最佳答案

<form:options /> 中的“items”属性标签显示以下文档:

The Collection, Map or array of objects used to generate the inner 'option' tags. This attribute is required unless the containing select's property for data binding is an Enum, in which case the enum's values are used.

所以你只需添加 <form:options />选择内没有任何属性的标签。这将使选择填充枚举项作为文本和值。您还可以添加默认的“选择”选项。例如:

<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>

希望这有帮助。

关于jsp - spring webflow 2绑定(bind): how to populate <select> with enum values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10751249/

相关文章:

c - 了解库绑定(bind)

java - JSP用JSP打印数组

java - bean 有什么讲究?

mysql - 从超过 1 个表格中选择或创建最近 3 篇文章的 View

MySql order by 并集重复结果

wpf - 以编程方式添加的 MenuItem 导致绑定(bind)错误

java - 如何使用java程序在tomcat网络服务器中创建文件夹?

java - 登录重定向错误

php - MySQL Select 选择 "or"并按该字段排序

AngularJS - 检查组件的绑定(bind)函数是否是一个函数