Какой атрибут управляет фактическими данными, представленными в selectOneMenu?
<h:outputText value="Category: " />
<p:selectOneMenu value="#{categoryController.selectedCategory}">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{categoryController.categories}" var="category" itemLabel="#{category.name}" itemValue="#{category.categoryID}"/>
</p:selectOneMenu>
У меня есть форма, которая позволяет пользователям вводить вопросы для викторины. Категории также могут быть введены, и в 1 категории есть много вопросов.
Сначала форма позволяла вводить идентификаторы категорий. Теперь, чтобы сделать его немного более сложным, я вместо этого заполняю selectOneMenu категориями для выбора. Меню заполняется нормально.
Проблема: выбор категории из этого списка должен означать выбор ее идентификатора внизу, чтобы сущность вопроса ссылалась на правильный идентификатор категории, как всегда было сделано. У меня сложилось впечатление, что атрибут
itemValue="#{category.categoryID}
должен позволить это. Но это, похоже, не работает, так как сущности вопросов не отображаются как добавленные в моей базе данных при выборе категории. Я тоже пробовал
questionController.newQuestion.categoryID
as newQuestion работает для текстовых полей в форме. Но кажется, что желаемый результат так и не был достигнут.
Является ли itemValue атрибутом, который я должен использовать? А если нет, то какой?
ОБНОВИТЬ:
Так что все еще довольно застрял, но вот код, показывающий, как реализованы категории
Класс контроллера класса:
public class CategoryController extends BasePageController {
@Autowired
private ICategoryRepository categoryRepository;
private List<Category> categories;
private Category newCategory = new Category();
private Category selectedCategory = new Category();
private Category[] selectedCategories;
и класс Категория:
public class Category {
private int categoryID;
private String name;
1 ответ
Поскольку право, которое вы хотели бы создать и для которого вы выбираете категорию, является question
Вы должны установить значения на questionController.newQuestion
, Т.е. вам нужно было бы установить categoryId на questionController.newQuestion.categoryID
,
Что вы можете достичь, установив значение p:selectOneMenu
к этому. Так что попробуйте следующее для p:selectOneMenu
-open-тег:
<p:selectOneMenu value="#{questionController.newQuestion.categoryID}">