2014-02-28 53 views
0

我正在嘗試閱讀Alfresco中的文件內容。我看到了使用 ContentService的示例。不幸的是,當我嘗試使用示例代碼時,ContentService 不可用。 我已經加入作爲contentService的我管理bean的faces-config.xml中如何獲得Alfresco ContentService對象?

<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,p roperty:contentService

任何人都可以告訴我,如果有什麼,我失蹤?謝謝

+0

我建議你或者使用spring context文件將'ContentService'(注意大C--你幾乎總是想要大的字母bean)連接到你自己的bean,或者從活動的Service Registry中抓取它,而不是問面對做奇怪的事情... – Gagravarr

+0

你能提供一個示例代碼的鏈接嗎?我沒有真正看到覆蓋faces-config.xml的任何代碼。就像@Gagravarr說的使用Spring! –

回答

1

PropertyNotFoundException聽起來像您的託管bean缺少setter方法。

如何將彈簧託管的bean展示給jsf可能取決於您使用的spring和/或jsf版本。例如,請查看Spring beans injected into JSF Managed Beans

最後,請確保您的Alfresco Spring上下文是JSF踢之前進行初始化。

0

代碼

1)對於被注入你需要添加getter setter方法爲他們每個服務的許多問題。 如果您爲contentservice添加getter setter,則可以擺脫您的錯誤。

2)其他的事情是你正在嘗試通過服務註冊表來獲取conentservice,在這種情況下你需要注入服務註冊表並添加getter setter。否則直接通過faces-config注入contentservice實例,並且提供了添加getter setter的設置,您可以直接使用contentservice的實例。