我正在尝试为我的类别模型制作一个自定义 JSF 转换器。我从字段和转换器获得的值是类别 ID。我应该通过该 ID 检索类别并返回该对象吗?我尝试注入(inject)实体管理器,但这不起作用,因为它不受管理。我找到了一个帖子,其中有人做到了,但我不知道将实体管理器注入(inject)转换器是否常见。
或者我应该重写 Category 类中的 toString 方法,并返回一个字符串,例如
2, "long description"
然后使用 toString 作为字段中的值。当我想要它返回到一个对象时,我将其拆分并在类别对象上使用 setter 。我以前没有使用过转换器,所以我不知道这是否更好?
最佳答案
I have tried injecting an entitymanager but that did not work, since it is not managed
无法在 @FacesConverter
中注入(inject) EntityManager
(或者更好的是,@EJB
)是 JSF 规范中的一个疏忽并计划在即将发布的 JSF 2.2 中进行修复,该版本应于 2012 年第一季度末发布。
解决方法是使转换器成为 @ManagedBean
或 @Named
bean,或者通过 JNDI 手动获取 EJB。
Or should I override the toString method in the Category class and then use the toString as value in the fields. When I want it back to an object I split it and use the setters on the category object.
不,绝对不要这样做。您可以通过这种方式将 View 与模型混合在一起。使用功能齐全的转换器
。
另请参阅:
关于java - 我应该如何制作自定义类别转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8576402/