java - 我应该如何制作自定义类别转换器

标签 java jsf jakarta-ee

我正在尝试为我的类别模型制作一个自定义 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/

相关文章:

java - Java 8 中的抽象类和接口(interface)有什么区别?

jsf - 命令按钮使用 FlashScope 参数打开新选项卡

java - JSF/Spring 如何使用h :selectOneMenu without SelectItem objects

java - 为什么EJB不需要初始化?

java - 在 spring security 中覆盖默认登录处理 url 的用例是什么

Java 套接字服务器被杀死

java - 在 WildFly 10 中使用自定义 SSLSocketFactory

java - 了解 ProcessBuilder

jsf - <f :facet> Tag Library supports namespace: http://java. sun.com/jsf/html,但没有为名称定义标签:facet

JAVA EE 辅助功能