留言板
Error al importar un lar borrando los layouts
Mercedes Herranz,修改在9 年前。
Error al importar un lar borrando los layouts
New Member 帖子: 7 加入日期: 13-1-16 最近的帖子
Buenas,
A ver si alguno le ha surgido este problema. Usando el API de liferay 6.1.2 GA2, al intentar importar un lar (tanto publico como privado) a un usuario ya existente, e intentar borrar sus páginas:
Esta operación se esta realizando desde un webservice, y la llamada sería está:
En el mapa, la propiedad de borrar layouts, esta a true, si la pongo a false, lo importa perfectamente pero no borrar las páginas que tiene el usuario.
El mapa completo sería este:
Y salta la siguiente excepción al poner el atributo PortletDataHandlerKeys.DELETE_MISSING_LAYOUTS a true:
Trazando el código de Liferay parece que no encuentra la siguiente propiedad:
¿Alguna idea?
Gracias de antemano.
Un saludo
A ver si alguno le ha surgido este problema. Usando el API de liferay 6.1.2 GA2, al intentar importar un lar (tanto publico como privado) a un usuario ya existente, e intentar borrar sus páginas:
Esta operación se esta realizando desde un webservice, y la llamada sería está:
LayoutLocalServiceUtil.importLayouts(userId, groupId, privateLayout, LARImporter.getParameterMap(), larFile);
En el mapa, la propiedad de borrar layouts, esta a true, si la pongo a false, lo importa perfectamente pero no borrar las páginas que tiene el usuario.
parameters.put(PortletDataHandlerKeys.DELETE_MISSING_LAYOUTS, new String[] { Boolean.TRUE.toString() });
El mapa completo sería este:
parameters.put(
PortletDataHandlerKeys.CATEGORIES,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.DELETE_MISSING_LAYOUTS,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.DELETE_PORTLET_DATA,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.LAYOUT_SET_PROTOTYPE_LINK_ENABLED,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.LAYOUT_SET_SETTINGS,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.LAYOUTS_IMPORT_MODE,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.LOGO,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.PERMISSIONS,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.PORTLET_ARCHIVED_SETUPS,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.PORTLET_DATA,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.PORTLET_SETUP,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.PORTLET_USER_PREFERENCES,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.PORTLETS_MERGE_MODE,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.PUBLIC_LAYOUT_PERMISSIONS,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.PUBLISH_TO_REMOTE,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.THEME,
new String[] {Boolean.FALSE.toString()});
parameters.put(
PortletDataHandlerKeys.THEME_REFERENCE,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.USER_ID_STRATEGY,
new String[] {Boolean.TRUE.toString()});
parameters.put(
PortletDataHandlerKeys.USER_PERMISSIONS,
new String[] {Boolean.TRUE.toString()});
Y salta la siguiente excepción al poner el atributo PortletDataHandlerKeys.DELETE_MISSING_LAYOUTS a true:
Caused by: java.lang.NullPointerException
at com.liferay.portal.kernel.util.ParamUtil.getLong(ParamUtil.java:616)
at com.liferay.portal.service.impl.LayoutLocalServiceStagingAdvice.deleteLayout(LayoutLocalServiceStagingAdvice.java:84)
at com.liferay.portal.service.impl.LayoutLocalServiceStagingAdvice.invoke(LayoutLocalServiceStagingAdvice.java:130)
at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:118)
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.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:211)
at $Proxy27.deleteLayout(Unknown Source)
at com.liferay.portal.service.LayoutLocalServiceUtil.deleteLayout(LayoutLocalServiceUtil.java:435)
at com.liferay.portal.lar.LayoutImporter.deleteMissingLayouts(LayoutImporter.java:196)
at com.liferay.portal.lar.LayoutImporter.doImportLayouts(LayoutImporter.java:774)
at com.liferay.portal.lar.LayoutImporter.importLayouts(LayoutImporter.java:147)
at com.liferay.portal.service.impl.LayoutLocalServiceImpl.importLayouts(LayoutLocalServiceImpl.java:1408)
... 132 more
Trazando el código de Liferay parece que no encuentra la siguiente propiedad:
long layoutSetBranchId = ParamUtil.getLong(serviceContext, "layoutSetBranchId");
¿Alguna idea?
Gracias de antemano.
Un saludo
Mercedes Herranz,修改在9 年前。
RE: Error al importar un lar borrando los layouts
New Member 帖子: 7 加入日期: 13-1-16 最近的帖子
Ya lo hemos conseguido solucionado, o eso parece.
El problema es que como no vamos a través del ciclo normal de una petición, sino a través de una llamada a un web service, cuando intenta recuperar el servicecontext es null. Como solución, antes de llamar al API de liferay para importar el lar, instanciamos el servicecontext:
Un saludo
El problema es que como no vamos a través del ciclo normal de una petición, sino a través de una llamada a un web service, cuando intenta recuperar el servicecontext es null. Como solución, antes de llamar al API de liferay para importar el lar, instanciamos el servicecontext:
ServiceContextThreadLocal.pushServiceContext(new ServiceContext());
LayoutLocalServiceUtil.importLayouts(userId, groupId, privateLayout, getConfigLayout(clearOld), larFile);
Un saludo