【问题标题】:How can I get an Alfresco ContentService object?如何获取 Alfresco ContentService 对象?
【发布时间】:2014-02-28 21:26:15
【问题描述】:

我正在尝试在 Alfresco 中读取文件的内容。我见过使用的例子 内容服务。不幸的是,当我尝试使用示例代码时,ContentService 不可用。 我在 faces-config.xml 中将 ContentService 添加为我的托管 bean 的托管属性

<managed-property>
<property-name>contentService</property-name>
<value>#{ContentService}</value>
</managed-property>

在我的 java 代码中,我正在使用

ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
final ServiceRegistry serviceRegistry = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY);

// contentService is an instance variable.
this.contentService = serviceRegistry.getContentService();

我得到了这个异常:

javax.faces.el.E​​valuationException:调用表达式时出现异常 #{DeployAssetQADialog.start} 造成的: javax.faces.el.PropertyNotFoundException:Bean:com.XXXXXXXXXX.CCCCCCCC.DeployAssetDialog,属性:contentService

谁能告诉我我是否缺少某些东西?谢谢

【问题讨论】:

  • 我建议你要么使用 spring 上下文文件将ContentService(注意大 C - 你几乎总是想要大字母 bean)连接到你自己的 bean,或者从活动服务中获取它注册表,而不是要求面孔做奇怪的事情......
  • 能否提供示例代码的链接?我还没有真正看到任何覆盖 faces-config.xml 的代码。就像@Gagravarr 说的使用 Spring!

标签: alfresco


【解决方案1】:

PropertyNotFoundException 听起来您的托管 bean 缺少 setter 方法。

如何向 jsf 公开 spring 管理的 bean 可能取决于您使用的 spring 和/或 jsf 版本。以Spring beans injected into JSF Managed Beans 为例。

最后,确保您的 Alfresco spring 上下文在 jsf 启动之前已初始化。

【讨论】:

    【解决方案2】:

    代码中的许多问题

    1) 对于每个注入的服务,您需要为它们添加 getter setter 方法。 如果您为 contentservice 添加 getter setter,您可以摆脱错误。

    2) 另一件事是您试图通过服务注册表获取 conentservice,在这种情况下,您需要注入服务注册表并为此添加 getter setter。否则直接获取 contentservice 实例,因为它是通过 faces-config 注入的,并且如果您为其添加了 getter setter,您就可以直接使用该 contentservice 实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-05
      • 1970-01-01
      • 2015-10-20
      相关资源
      最近更新 更多