Какой атрибут управляет фактическими данными, представленными в 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}">
Другие вопросы по тегам