Это не выглядит правильно.Вы взрываете свойства модели в контроллере.
protected Question question;
protected List<Answer> answers;
protected List<Category> categories;
public String persist() {
question.setAnswers(answers);
question.setCategories(categories);
questionBean.persistQuestion(question);
}
public void persistAsUserSubmitted() {
question.setAnswers(answers);
question.setCategories(categories);
questionBean.persistAsUserSubmitted(question);
}
Можно было бы ожидать, что она будет больше
protected Question question;
public String persist() {
questionBean.persistQuestion(question);
}
public void persistAsUserSubmitted() {
questionBean.persistAsUserSubmitted(question);
}
, если вы просто ссылаетесь на вложенные свойства в представлении по #{bean.question.answers}
и #{bean.question.categories}
вместо #{bean.answers}
и #{bean.categories}
.
Что касается конкретного вопроса, я предполагаю, что вы говорите о «доступных категориях», которые должны использоваться в <f:selectItems>
и т.п.?Да, вы можете просто поместить его в отдельный компонент (область действия приложения).Но если это касается «выбранных категорий», просто свяжите его с Question
как #{bean.question.categories}
, как предлагалось ранее.Например,
<h:selectManyListbox value="#{bean.question.categories}" converter="#{categoryConverter}">
<f:selectItems value="#{data.categories}" />
</h:selectManyListbox>
Обратите внимание, что на конвертер ссылается EL, потому что я предполагаю, что это @ManagedBean
или @Named
, поскольку вы хотите использовать @EJB
внутри него (на основе вашего другого вопроса).