我正在Play!1.2.5中构建一个web应用程序。我有一个模型类,其中一个属性是枚举的集合:
@Entity
@Table(name="AppUser")
public class User extends Model {
...
@Column(name = "industry_id")
@ElementCollection(targetClass = Industry.class)
@CollectionTable(name = "Industry", joinColumns = @JoinColumn(name = "AppUser_id"))
public Set<Industry> industries = new HashSet<Industry>();
}枚举是:
public enum Industry {
Industry1,
Industry2
}如何准确地将industries集合绑定到编辑模板,在该模板中,industries字段表示为复选框列表,选中或取消选中复选框可在对象集合中添加或删除它们?
谢谢你
发布于 2012-07-16 15:19:39
您可以像这样绑定您的复选框
#{form @save()}
<input type="checkbox" value="Industry1" name="user.industries">Industry number 1
<input type="checkbox" value="Industry2" name="user.industries">Industry number 2
<input type="checkbox" value="Industry3" name="user.industries">Industry number 3
<input type="submit" value="Submit">
#{/form}在我的示例中,它适用于没有JPA注释的模型,但我猜它也适用于您的示例
发布于 2012-07-17 14:31:25
最近,我为您提供了以下解决方案:
在控制器中,将枚举作为Iterator传递给视图:
Iterator<Attribute> industries = EnumSet.allOf(Industry.class).iterator();
render(industries);在窗体视图中,遍历列表并检查所选内容:
#{list items: industries, as: 'industry' }
<label>
<input type="checkbox" name="industries" value="${industry.name()}"
#{if user?.industries?.contains(industry)} checked #{/if}
/>
&{'industry'}
</label>
#{/list} 要处理未选择字段的情况,您需要以下条件(因为,如果未选择任何字段,则不会提交任何值,现有选择将保持不变:
<input type="hidden" name="industries" value="" />最后,在接收表单输入的控制器方法中,有一个参数Set<Industry> industries就足够了,Play将把选定的值加载到该参数中。
https://stackoverflow.com/questions/11494913
复制相似问题