0
<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个类别有很多问题。

起初,表格允许输入类别 ID。现在,为了使它更复杂一点,我改为使用要从中选择的类别填充一个 selectOneMenu。菜单填充良好。

问题:从此列表中选择一个类别应该意味着在下面选择它的 ID,以便问题实体像往常一样引用正确的类别 ID。我的印象是属性

itemValue="#{category.categoryID}

应该允许这样做。但这似乎不起作用,因为选择类别时,问题实体并未像我的数据库中添加的问题实体出现。我也试过

questionController.newQuestion.categoryID

因为 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;
4

1 回答 1

-1

由于您要创建并为其选择类别的实体是question您必须在 上设置值questionController.newQuestion。即,您必须将 categoryId 设置为questionController.newQuestion.categoryID

您可以通过将值设置为该值p:selectOneMenu来实现。p:selectOneMenu因此,为-open-tag尝试以下操作:

<p:selectOneMenu value="#{questionController.newQuestion.categoryID}">
于 2013-07-31T14:00:54.223 回答