在 FacesConverter 中使用 ManagedBean

2024-05-16

我想用ManagedBean in my Converter. The ManagedBean负责从数据库获取数据。在Converter我想将字符串转换为必须从数据库获取的对象。

这是我的转换器

@FacesConverter(forClass=Gallery.class, value="galleryConverter")
public class GalleryConverter implements Converter {

    // of course this one is null
    @ManagedProperty(value="#{galleryContainer}")
    private GalleryContainer galleryContainer;

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String galleryId) {
        return galleryContainer.findGallery(galleryId);
        ...
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object gallery) {
        ...
    }

}

我知道galleryContainer将为空,如果我想注入ManagedBean into Converter我可以将其标记为ManagedBean也。问题是我想以漂亮的方式做到这一点,我不想寻找一些“奇怪的解决方案”。也许问题出在我的应用程序中?也许还有其他一些好的解决方案来创建必须从数据库获取数据并在转换器中使用的对象?我还想提一下,我更喜欢使用DependencyInjection而不是使用创建新对象new声明(更容易测试和维护)。有什么建议么?


而不是使用@FacesConverter你应该使用@ManagedBean,因为当前 faces 转换器不是有效的注入目标。尽管如此,您可以选择您的转换器作为托管 bean,因此在您看来将其称为converter="#{yourConverter}"(按托管 bean 名称)而不是converter="yourConverter"(通过转换器 ID)。

基本使用示例:

@ManagedBean
@RequestScoped
public class YourConverter implements Converter {

    @ManagedProperty...
    ...

    //implementation of converter methods

}

当然,阅读 BalusC 的著作是无价的JSF 2.0 中的通信 http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html#ProcessingGETRequestParameters也将阐明这个问题。

还值得一提的是,如果转换器 bean 不应该保存任何状态,则其范围可能会更改为应用程序或会话等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 FacesConverter 中使用 ManagedBean 的相关文章

随机推荐

  • 是否使用 delegate()

    有没有人能够解释为什么使用以下函数 potato delegate frenchFry click function e do something 优于 potato bind click function e if e target ha
  • 使用 facebook 共享动态更新元标签 - Angular 6

    我需要动态更新元标记 如 og title og description 和 og image 并在 facebook 上共享相同的内容 我已经尝试了所有方法 但没有任何效果 首先 我尝试使用 javascript 设置元标记 如下所示 v
  • 如何在jasper报告中显示少于5行的数据

    我创建了一个报告表 我已将其设置为每页显示 5 行数据 现在的问题是 当数据少于5行时 表格将不会出现 我已经把 V REPORT COUNT 5 0在每个部分 如何修改此公式 以便即使少于 5 行也能显示数据行 抱歉 由于工作繁忙 无法提
  • 在 Mac OS X 上构建 Linux 内核

    我正在做一个修改Linux内核的项目 我有一台桌面 Linux 机器 在上面构建内核没有问题 不过 我要去旅行 我想在途中工作 我只有一台 MacBook 当我尝试构建 Linux 内核时 它抱怨说elf h was not found 我
  • Serializer.is_valid() 虽然 `required=False` 失败 - Django REST Framework

    我有一个像这样的序列化器 class DataSetColumnSerializer serializers ModelSerializer custom target serializers PrimaryKeyRelatedField
  • Android浏览器上的Web应用程序宽度问题

    所以到目前为止我只在 Android 浏览器上遇到过这个问题 基本上我的网站几乎一直运行良好 而且我还没有在 Dolphin Opera 或 Skyfire 上看到这个问题 但偶尔当我从手机主屏幕之一上的书签重新打开 Android 浏览器
  • Apple Developer 应用程序门户不再可以生成新的 Bundle Seed ID

    iOS 开发者门户中的新界面不再为您的应用程序 ID 提供 生成新的 按钮 取而代之的是 使用团队 ID 这将导致使用相同的种子 ID 任何人都知道为什么要进行更改以及您应该如何使用新的捆绑包种子 ID 随意补一些 不再可能生成新的种子 I
  • 测试 Python 脚本

    如何使用 doctest unittest nose 等测试框架测试 Python 脚本的 STDOUT 输出 例如 假设运行我的脚本 todo py list 应该返回 取出垃圾 我读过有人将脚本的 STDOUT 打印部分与生成要打印的输
  • 是否可以从外部文件运行 openoffice 宏?

    我想从外部文件运行 OpenOffice 宏 喜欢 vlad leo soffice macro home vlad q vbs 并不是真正的答案 只是一个评论 以便提出这个问题 并希望得到答案 这可能与必须显式设置宏的权限有关 例如 编辑
  • 自定义 SVG 未加载到我的图像标签中

    目前我正在尝试将自定义 svg 组件加载到图像标签内 但由于某种原因 我无法看到地图组件内的 svg 图像 我的自定义 SVG 文件如下所示 我在 SVG 中加载另一个图像
  • 仅当重复行与模式匹配时才删除它们

    这个问题 https stackoverflow com questions 1444406 how can i delete duplicate lines in a file in unix有一个很好的答案说你可以使用awk seen
  • X11 等待并获取剪贴板文本

    我必须监视 X11 剪贴板 目前 我每 5 秒请求一次剪贴板选择 然后对从剪贴板返回的文本进行哈希处理 并将其与上次检查的哈希计算结果进行比较 如果哈希值不相同 我会分析文本内容并做一些事情 我不喜欢我的方法 我来自Windows 使用wi
  • 正则表达式替换混合数字+字符串

    我想删除所有包含数字的单词 示例 LW23 London W98 String 从上面的字符串中我唯一想保留的是 London String 这可以用正则表达式来完成吗 我目前正在使用 Python 但 PHP 代码也很好 Thanks E
  • 实体框架服务层更新 POCO

    我正在使用Service Layer gt Repository gt Entity Framework Code First w POCO objects方法 我在更新实体方面遇到了困难 我正在使用 AutoMapper 将域对象映射到视
  • 从单个 javascript 函数向两个不同的 PHP 脚本发送两个 Ajax 请求

    是否可以同时向两个或多个 Php 脚本发送 Ajax 请求 我知道这可以串行实现 从 1 获取响应 然后从另一个获取响应 但我想知道是否可以同时实现 请协助我使用以下代码 function calShowUpload if http rea
  • Spark 2.2 无法将 df 写入 parquet

    我正在构建一个聚类算法 我需要存储模型以供将来加载 我有一个具有以下架构的数据框 val schema new StructType add StructField uniqueId LongType add StructField tim
  • GCP BigQuery如何通过python api设置表的到期日期

    我正在使用 BigQuery Python API 创建表 并且想为该表设置一个到期日期 以便该表会在特定天数后自动删除 这是我的代码 client bq Client job config bq QueryJobConfig datase
  • 删除分组 UITableView 中的分隔符

    我需要使用自定义单元格创建分组表格视图 每个单元格必须有一个背景图像 以便一个单元格的图像会接触第二个单元格的图像 依此类推 我尝试将分隔符样式设置为 无 但我仍然得到单元格之间的透明分隔符 请帮我删除单元格之间的空间 祝你有美好的一天 谢
  • 根据属性值使用 xslt 合并两个元素

    这是我的源文件的样子
  • 在 FacesConverter 中使用 ManagedBean

    我想用ManagedBean in my Converter The ManagedBean负责从数据库获取数据 在Converter我想将字符串转换为必须从数据库获取的对象 这是我的转换器 FacesConverter forClass