我正在使用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>
弹簧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>
你能告诉我怎样才能填充
非常感谢
答案 0 :(得分:4)
<form:options />
标记中的“items”属性显示以下文档:
用于生成内部的Collection,Map或对象数组 '选项'标签。除非包含,否则此属性是必需的 select的数据绑定属性是一个Enum,在这种情况下是 使用枚举值。
因此,您只需在select中添加<form:options />
标记而不添加任何属性。这将使select作为文本和值填充枚举项。您还可以添加默认的“选择”选项。例如:
<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>
希望这有帮助。