0

我正嘗試使用GroupLocalServiceUtil類中的方法addGroup在Liferay中創建一個新組。我根據文檔傳遞參數類型,但是它莫名其妙地拋出IllegalArgumentException。這是我的明碼:IllegalArgumentException在Liferay中創建組

ServiceContext sc = new ServiceContext(); 
sc.setScopeGroupId(10); 
GroupLocalServiceUtil.addGroup(11101, "com.liferay.portal.model.Group", 0, 0, "aaa","foo", description, 
      10, null, true, true, sc); 

什麼是錯?我可以將ServiceContext參數設置爲null嗎?

更新:我使用的版本是6.1。異常的堆棧跟蹤是:

Caused by: java.lang.IllegalStateException: Something went wrong: 
at com.pro.liferay.startUpHook.ReadGroupFromCsv.addData(ReadGroupFromCsv.java:69) 
at com.pro.liferay.startUpHook.CreateUserOnStartUp.run(CreateUserOnStartUp.java:27) 
at com.liferay.portal.kernel.events.InvokerSimpleAction.run(InvokerSimpleAction.java:42) 
at com.liferay.portal.deploy.hot.HookHotDeployListener.initEvent(HookHotDeployListener.java:1177) 
at com.liferay.portal.deploy.hot.HookHotDeployListener.initEvents(HookHotDeployListener.java:1239) 
at com.liferay.portal.deploy.hot.HookHotDeployListener.initPortalProperties(HookHotDeployListener.java:1595) 
at com.liferay.portal.deploy.hot.HookHotDeployListener.doInvokeDeploy(HookHotDeployListener.java:563) 
at com.liferay.portal.deploy.hot.HookHotDeployListener.invokeDeploy(HookHotDeployListener.java:273) 
... 23 more 
Caused by: java.lang.IllegalArgumentException 
at com.liferay.portal.service.impl.GroupLocalServiceImpl.addGroup(GroupLocalServiceImpl.java:276) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:122) 
at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:71) 
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118) 
at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:57) 
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118) 
at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:57) 
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118) 
at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:57) 
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118) 
at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:57) 
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118) 
at com.liferay.portal.security.pacl.PACLAdvice.invoke(PACLAdvice.java:51) 
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118) 
at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:211) 
at $Proxy23.addGroup(Unknown Source) 
at com.liferay.portal.service.GroupLocalServiceUtil.addGroup(GroupLocalServiceUtil.java:300) 
at com.pro.liferay.startUpHook.customutils.GroupUtil.addGroup(GroupUtil.java:63) 
at com.pro.liferay.startUpHook.customutils.GroupUtil.addGroup(GroupUtil.java:69) 
at com.pro.liferay.startUpHook.ReadGroupFromCsv.addData(ReadGroupFromCsv.java:67) 
... 30 more 
+0

因爲你有例外:它在哪裏拋出 - 你在那個地方檢查過Liferay的源代碼嗎?如果您檢查該位置,可能很明顯是什麼導致此異常。至少給出棧跟蹤和你使用的版本 – 2013-03-14 19:53:30

+0

@OlafKock:看看我的更新 – arjacsoh 2013-03-15 08:57:17

回答

1

我使用的Liferay 6.1.1,並在GroupLocalServiceImpl.addGroup尋找線276,我可以看到這一點:

if (className.equals(Group.class.getName())) { 
    if (!site && (liveGroupId == 0)) { 
     throw new IllegalArgumentException(); // this is line 276 
    } 
} 

所以,你必須設置site=falseliveGroupId=0

反正我用這段代碼,以創建站點(我再說一遍,的Liferay 6.1.1),它運行完美,只要我還記得;)

GroupLocalServiceUtil.addGroup(userId, Group.class.getName(), 0, "title","description",GroupConstants.TYPE_SITE_OPEN, "/siteFriendlyUrl", true, true, new ServiceContext()); 
0
  • 你肯定url可以爲空?
  • 你能用Group.class.getName()替換類名嗎?
+0

根據文檔friendlyUrl可以是可選的null。我按照上面的建議改變了班級名稱,但沒有任何效果。仍然是一個例外。 – arjacsoh 2013-03-14 13:15:03