标签: liferay-7

自定义taglib未加载Liferay7

我正在将Liferay portlet从6.0迁移到Liferay 7.0,而我遇到的许多障碍之一就是包含了我的自定义taglib.

我遵循以下建议:在Liferay 7中创建自定义taglib,但我的portlet无法加载taglib,记录以下错误:

09:50:48,566 ERROR [http-nio-8080-exec-10][FreeMarkerManager:208] Unable to add taglib my_tags to context
FreeMarker template error:
freemarker.template.TemplateModelException: Error while loading tag library for URI "/META-INF/my_tags.tld" from TLD location "servletContext:/META-INF/my_tags.tld"; see cause exception.
        at freemarker.ext.jsp.TaglibFactory.get(TaglibFactory.java:260)
        at com.liferay.portal.template.freemarker.internal.FreeMarkerManager$TaglibFactoryWrapper.get(FreeMarkerManager.java:647)
        at com.liferay.portal.template.freemarker.internal.FreeMarkerManager.addTaglibSupport(FreeMarkerManager.java:205)
        at com.liferay.taglib.util.ThemeUtil.doIncludeFTL(ThemeUtil.java:276)
        at com.liferay.taglib.util.ThemeUtil.doDispatch(ThemeUtil.java:157)
        at com.liferay.taglib.util.ThemeUtil.includeFTL(ThemeUtil.java:100)
        at com.liferay.taglib.util.ThemeUtil.include(ThemeUtil.java:82)
Run Code Online (Sandbox Code Playgroud)

但是,我的捆绑JAR 确实包含META-INF/my_tags.tld

令我印象深刻的是,当我的JSP加载时,错误不会发生,而是在主题的FreeMarker模板中.显然我的JSP在那时甚至没有被加载.

我的门户网站中的每个页面都会抛出错误,而不仅仅是那些包含我的portlet的页面(如果主题已经无法访问taglib,则会出现这种错误)

捆绑JAR的结构是:

com/
content/  
META-INF/
   +--- resources/
   MANIFEST.MF
   taglib-mappings.properties
   my_tags.tld
OSGI-INF/
WEB-INF/         
Run Code Online (Sandbox Code Playgroud)

由bnd任务生成的MANIFEST.MF包含以下依赖项:

Require-Capability: osgi.extender;osgi.extender="jsp.taglib";uri="/META-INF/my_tags.tld"
Run Code Online (Sandbox Code Playgroud)

该文件taglib-mappings.properties包含:

my_tags=/META-INF/my_tags.tld 
Run Code Online (Sandbox Code Playgroud)

我还尝试将.tld文件放在WEB-INF/tld …

jsp osgi portlet taglib liferay-7

8
推荐指数
1
解决办法
1086
查看次数

Freemarker不分配staticUtil

我在liferay 6.2上工作了应用程序显示模板,我使用freemarker帮助分页liferay的动态数据列表.当我升级到liferay 7时,这是一个问题.Liferay 7使用代码<#assign records = ddlDisplayTemplateHelper.getRecords(reserved_record_set_id)>获取记录.

旧代码:

<#assign DDLRecordLocalService = serviceLocator.findService("com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalService")> <#assign records = DDLRecordLocalService.getRecords(reserved_record_set_id)> <#assign totalRecord = DDLRecordLocalService.getRecordsCount(reserved_record_set_id, 0) >

它不起作用.

所以我尝试<#assign serviceLocator = staticUtil["com.liferay.portal.template.ServiceLocator"]>staticUtil得到一个错误.

以下评估为null或缺失:==> staticUtil [在模板"20115#20159#21387"第9行,第27列]提示:如果已知失败的表达式合法地引用有时为null或缺失的内容

在portal-ext.properties中我添加了:

freemarker.engine.restricted.classes=
freemarker.engine.restricted.packages=
freemarker.engine.restricted.variables= 
Run Code Online (Sandbox Code Playgroud)

freemarker liferay display-templates liferay-7

7
推荐指数
2
解决办法
4527
查看次数

liferay 7使用ldap与cas集成

我是liferay 7的新手,我想使用ldap将liferay 7与CAS服务器集成.

我的liferay的版本是7.0.2 GA3,CAS服务器的版本是3.5.2,我正在使用opendj活动目录.

我在localhost上安装了liferay:8080,CAS服务器在ssl上的一台服务器上,ldap在同一台服务器上.

我已经成功地将CAS与ldalp集成,我可以从ldap用户登录CAS服务器.在此之后,我在liferay中配置了CAS身份验证,该身份验证位于此CAS选项卡下的Configuration-> Instance Setting-> Authentication中.当我尝试登录即时获取以下网址时:

HTTP://本地主机:8080 /票务= ST-36-tP25deAgea9pUfwEcf6V-cas01.example.org

虽然门票正在生成,但我无法访问管理面板.

请帮助,谢谢你的推荐

cas ldap single-sign-on liferay-7

6
推荐指数
1
解决办法
374
查看次数

如何在网络形式Liferay 7中支持文件上传?

我需要一个Liferay Web表单的简单扩展,以增强对liferay 7 Web表单中的数据的文件附件.

还需要将此文件作为附件发送给注册用户.

我知道如何在liferay 6.2中实现此功能,但不是关于liferay 7.我使用的是liferay 7 GA-5 CE.

任何帮助赞赏.

liferay liferay-7

6
推荐指数
1
解决办法
891
查看次数

如何在Liferay 7中禁用SennaJS/SPA?

Liferay 7使用SennaJS作为其单页应用程序引擎,以便在表单提交和导航期间加载和替换门户页面的某些部分.有时这个功能会干扰我的用例,那么如何禁用它呢?

liferay liferay-7 senna.js

5
推荐指数
1
解决办法
2515
查看次数

在使用Liferay 7进行查询检索期间,CustomSQLUtil获取null值

虽然我对Liferay 6.2中的CustomSQLUtil类没有任何问题,但是我在Liferay 7中遇到了这个类的新版本的问题.的确,get方法返回null而不是预期的查询.

有人复制了吗?

以下是我在Eclipse Mars中的最后一次测试的描述:

  1. 在我的Liferay工作区中,我在服务模块的build.gradle中添加了以下行

compileOnly group:"com.liferay",name:"com.liferay.portal.dao.orm.custom.sql",version:"1.0.5"

  1. 在gradle刷新之后,我能够在我的FooFinderImpl类中使用CustomSQLUtil类来检索适当的查询.

  2. 此查询已写入default.xml文件,该文件被放入sray/custom-sql文件夹中,如Liferay 7文档中所述:

https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/custom-sql

我已经尝试了很多地方(在META-INF,在ressources ..),我甚至尝试扩展CustomSQL本机类来获取配置,但CustomSQLUtil类的get方法返回总是null而不是sql查询.

PS:我注意到这个新的"CustomSQLUtil.get"方法现在需要2个参数,除了查询ID之外还要求一个类.在这个类参数中,我输入了"Foo.class"值.

有人知道是否有配置要做?是否必须配置classpath或bundlecontext?

liferay java-ee liferay-service-builder liferay-7

4
推荐指数
1
解决办法
820
查看次数

Liferay- 删除控制面板菜单

我正在使用 Liferay 7 GA 4。左侧是 Liefray 菜单(控制面板、用户等...)

我想为普通用户删除此菜单,并使其仅对管理员可见。

任何人都可以帮助我找到如何做到这一点?

非常感谢提前

liferay-7

4
推荐指数
1
解决办法
2346
查看次数

无法更新包:x.jar,ID 为 y。捆绑包已卸载

在Liferay 7中,我已经将一个模块JAR放入了deploy/,然后我通过Gogo Shell卸载了它,现在我想再次安装它。

问题:当我再次将其复制到deploy/我收到此错误:

INFO  [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:252] Processing httpclient-osgi-4.5.3.jar
WARN  [fileinstall-/home/nico/liferay/osgi/modules][org_apache_felix_fileinstall:103] Failed to update bundle: /home/nico/liferay/osgi/modules/httpclient-osgi-4.5.3.jar with ID 1088. The bundle has been uninstalled 
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

osgi liferay liferay-7

3
推荐指数
1
解决办法
1344
查看次数

如何在OSGI(Liferay DXP)中使用JAXB 2.2.11

我正在尝试在osgi环境(Liferay DXP)中使用JAXB 2.2.11。我在创建JAXBContext时遇到问题。基于在研究像发现了一些其他来源的这个这个,我已确定,在OSGi容器中,我需要提供JAXB实例化上下文正确的类加载器。所以我有这样的代码:

ClassLoader cl package.with.jaxb.objects.ObjectFactory.class.getClassLoader(); JAXBContext jc = JAXBContext.newInstance("package.with.jaxb.objects ", cl);

这段代码导致空指针异常与以下堆栈跟踪:

Caused by: java.lang.NullPointerException
    at javax.xml.bind.ContextFinder.handleClassCastException(ContextFinder.java:129)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:201)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:146)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:371)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:446)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:409)
Run Code Online (Sandbox Code Playgroud)

查看ContextFinder的源,我可以看到context在第129行中该值必须为null:

throw handleClassCastException(context.getClass(), JAXBContext.class);

我认为问题可能是我的模块依赖于jaxb-api 2.2.11,但是jaxb-impl类是由rt.jar在运行时提供的,并且可能比2.2.11更新,因为Liferay DXP在JDK 1.8上运行。为了解决这个问题,我尝试将jaxb-impl.jar 2.2.11作为依赖项包含在我的osgi模块中,并认为jaxb-api和jaxb-impl版本会匹配。之后,尝试使用与上述相同的代码创建JAXBContent会导致以下错误:

ClassCastException: attempting to cast jar:file:/C:/Program%20Files/Java/jdk1.8.0_144/jre/lib/rt.jar!/javax/xml/bind/JAXBContext.class to bundleresource://623.fwk616113009:13/javax/xml/bind/JAXBContext.class. Please make sure that you are specifying the proper ClassLoader.
Run Code Online (Sandbox Code Playgroud)

根据此消息的外观,实例化的JAXBContext来自通过rt.jar加载的JAXBContext版本。这让我非常困惑,因为我希望使用模块的类加载器加载的JAXBContext版本,因为我已经在模块中包含jaxb-impl.jar,并且指定了模块的类加载器为我对JAXBContext.newInstance的调用。谁能阐明我如何使jaxb 2.2.11在osgi容器中工作?

*请注意,我无法升级模块所使用的jaxb-api的版本,因为JAXB代码实际上位于需要jaxb 2.2.11的第三方jar中(目前我刚刚从等式中删除了第三方jar通过编写一些测试JAXB代码)。

osgi jaxb osgi-bundle liferay-7

3
推荐指数
1
解决办法
1212
查看次数

Liferay 7.3:如何预配置嵌入在页面片段中的 portlet?

我们正在使用 Liferay 7.3 (CE) 并试图通过“页面片段”来包含“内容页面”的相对较新的功能。我们能够使用<lfr-widget-WIDGETALIAS>标记开发已经包含 portlet(在内容页面的上下文中称为“小部件”)的页面片段。到目前为止,这是有效的。

现在,我们正在尝试准备嵌入应用了特殊 portlet 配置的portlet 的页面片段。例如,我们想要准备一个页面片段,它只显示一个资产发布者 portlet,该 portlet 被配置为列出来自预定义类别的 WebContent 文章。用户应该能够将该片段放到页面上,而不必关心资产发布者 portlet 的配置。

我们没有找到任何直接的方法来实现这一点——我们的第一个猜测是,配置可以写成<lfr-widget-...>标签的属性或内容,但被 liferay 文档中的一个提示阻止了,即没有有效的属性或内容可以附加到该标签.

是否有人对如何在应用预定义的 Portlet 配置的页面片段中嵌入 Portlet 有所了解?(包括开箱即用的 Liferay portlet?)

liferay liferay-7

3
推荐指数
1
解决办法
1052
查看次数