我有一个名为 person 的实体。 每个人都有三个字段:
性别(男,女) 母亲(自我引用) 父亲(自我引用)
现在,在我看来jspx中,我希望两个选定的字段只显示母亲选择中的女性人物和父亲字段中的男性人物。最好的方法是什么?
答案 0 :(得分:3)
首先,您应该创建动态查找器,以便sex
获取人员。输入Roo控制台:
finder list
然后找到类似findPeopleBySex
的内容并输入:
finder add --finderName findPeopleBySex
如果您不想搭建此查找程序,可以将exposeFinders = false
添加到@RooWebScaffold
的{{1}}注释中。
然后你应该打开你的PersonController
(我认为这个身体是空的)并放置如下内容:
PersonController
最后打开@ModelAttribute("men")
public Collection<Person> populateMen() {
return Person.findPeopleBySex(Gender.Male).getResultList();
}
@ModelAttribute("women")
public Collection<Person> populateWomen() {
return Person.findPeopleBySex(Gender.Female).getResultList();
}
,然后找到以下行:
{project_root}/src/main/webapp/WEB-INF/views/people/create.jspx
将它们改为:
<field:select field="mother" id="c_xxx_Person_mother" itemValue="id" items="${people}" path="/people" z="xxx"/>
<field:select field="father" id="c_xxx_Person_father" itemValue="id" items="${people}" path="/people" z="xxx"/>
确保 <field:select field="mother" id="c_xxx_Person_mother" itemValue="id" items="${women}" path="/people" z="xxx"/>
<field:select field="father" id="c_xxx_Person_father" itemValue="id" items="${men}" path="/people" z="xxx"/>
属性(哈希码)的值变为z
。这意味着Roo将来不会改变它。
现在您可以运行您的应用程序并查看结果。