我正在使用 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/