我需要一个自定义转换器吗?

时间:2012-01-06 20:33:04

标签: java jsf java-ee

从查看此代码使其看起来像itemValue的源代码生成基于对象toString()方法的值。所以bean.question.categories不能是包含类别的arraylist ......至少它不起作用。我需要制作自己的转换器才能使其正常工作吗?

<h:selectManyMenu value="#{bean.question.categories}" id="questionCategories">
    <f:selectItems value="#{categoryValuesManager.categories}" var="category"
                   itemValue="#{category}" itemLabel="#{category.description}"/>
</h:selectManyMenu>

问题实体与类别实体之间也存在双向多对多关系,这让我头疼!  因为;在创建一个新的问题实例时,该实例的categories属性为null,对吧?所以我需要为它分配一个空的ArrayList<Category>。那么,我是否需要遍历该arraylist中的每个项目并在类别一侧分配一个带有一个问题实例的arraylist?

1 个答案:

答案 0 :(得分:0)

  

我是否需要制作自己的转换器以使其正常工作?

我认为您必须创建自己的Converter。 JSF无法自动将字符串转换为Entity对象。

  

我是否需要遍历该arraylist中的每个项目,并在类别一侧指定一个带有一个问题实例的arraylist?

如果您成功创建了Converter可以将String输入转换为相应的Category对象,则<h:selectManyMenu>将为您提供List<Category>。然后我认为您可以将其直接分配给问题的categories属性。您仍然需要遍历categories列表以将Question实体绑定到每个实体。