首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Play!1.2.5.:对象的枚举集合绑定到模板

Play!1.2.5.:对象的枚举集合绑定到模板
EN

Stack Overflow用户
提问于 2012-07-16 03:25:46
回答 2查看 1K关注 0票数 1

我正在Play!1.2.5中构建一个web应用程序。我有一个模型类,其中一个属性是枚举的集合:

代码语言:javascript
运行
复制
@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>();

}

枚举是:

代码语言:javascript
运行
复制
public enum Industry {
    Industry1,
    Industry2
}

如何准确地将industries集合绑定到编辑模板,在该模板中,industries字段表示为复选框列表,选中或取消选中复选框可在对象集合中添加或删除它们?

谢谢你

EN

Stack Overflow用户

发布于 2012-07-17 14:31:25

最近,我为您提供了以下解决方案:

在控制器中,将枚举作为Iterator传递给视图:

代码语言:javascript
运行
复制
Iterator<Attribute> industries = EnumSet.allOf(Industry.class).iterator();
render(industries);

在窗体视图中,遍历列表并检查所选内容:

代码语言:javascript
运行
复制
#{list items: industries, as: 'industry' }
<label>
     <input type="checkbox" name="industries" value="${industry.name()}"
        #{if user?.industries?.contains(industry)} checked #{/if}
     />
     &{'industry'}
</label>
#{/list}    

要处理未选择字段的情况,您需要以下条件(因为,如果未选择任何字段,则不会提交任何值,现有选择将保持不变:

代码语言:javascript
运行
复制
<input type="hidden" name="industries" value="" />

最后,在接收表单输入的控制器方法中,有一个参数Set<Industry> industries就足够了,Play将把选定的值加载到该参数中。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11494913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档