我正在尝试阅读Alfresco中文件的内容。我见过使用过的例子 contentService的。不幸的是,当我尝试使用示例代码时,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.EvaluationException:调用表达式时出现异常#{DeployAssetQADialog.start} 引起的: javax.faces.el.PropertyNotFoundException:Bean:com.XXXXXXXXXX.CCCCCCCC.DeployAssetDialog,property:contentService
有人能告诉我是否有遗漏的东西吗?感谢
答案 0 :(得分:1)
PropertyNotFoundException
听起来像你的托管bean缺少一个setter方法。
如何将spring托管bean暴露给jsf可能取决于您使用的spring和/或jsf版本。请查看Spring beans injected into JSF Managed Beans示例。
最后,确保在jsf启动之前初始化您的Alfresco spring上下文。
答案 1 :(得分:0)
代码中的许多问题
1)对于注入的每个服务,您需要为它们添加getter setter方法。 如果为contentservice添加getter setter,你可以摆脱错误。
2)其他的事情是你试图通过服务注册表获得conentservice,在这种情况下你需要注入服务注册表并为此添加getter setter。否则直接通过faces-config注入contentservice实例,如果你为它添加了getter setter,你可以直接使用contentservice的实例。