Прежде всего, вы должны создать динамический искатель, чтобы получить людей по sex
. Введите в консоли Roo:
finder list
Затем найдите что-то вроде findPeopleBySex
и наберите:
finder add --finderName findPeopleBySex
Если вы не хотите создавать этот искатель, вы можете добавить exposeFinders = false
к аннотации @RooWebScaffold
вашего 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
(хеш-код) стало user-managed
. Это означает, что Ру не изменит его в будущем.
Теперь вы можете запустить приложение и увидеть результат.