如何通过自定义插件门户中的custom-finder获取liferay实体?
我们如何使用自定义SQL? 以下是我用default.xml编写的SQL查询(我已经将查询缩小到最低限度,以使逻辑保持简单.因为它包含了一些功能,并且连接了我们无法使用的功能DynamicQuery API ): SELECT grp.* FROM Group_ WHERE site = 1 AND active_ = 1 AND type_ 3 MyCustomGroupFinderImpl.java中的相关代码: Session session = null; try { session = openSession(); // fetches the query string from the default.xml String sql = CustomSQLUtil.get(FIND_ONLY_ACTIVE_SITES); SQLQuery sqlQuery = sessio
4 2024-04-04
编程技术问答社区
在js页面中使用velocity模板引擎
我知道有一些nodejs模块可以在节点中使用apache速度,例如 问题的回答. 可以将其用作A,说,小胡子更换,也许是browserify.js? 您将如何作为工作流程? 我怀疑这将是Liferay的前端模板开发的更好实现,因此前部可以使用Java Team HTML已速度模板. 非常感谢. 解决方案 您可以直接使用 velocityjs 在使用 安装 首先在node_modules中安装velocityjs $> npm install velocityjs 现在从您的项目(上述node_modules存在的位置)中使用浏览 browserify -r velocityjs > velocity.js 这将创建一个可以直接包含在网站中的velocity.js文件.如果您没有浏览器,请进行npm install -g browserify 用法 在您的网页JS文件中首先需要Velocityjs var ve
0 2024-04-04
编程技术问答社区
编辑Liferay的速度模板时,不显示或需要一段时间
目前,我正在编辑我的 portal_normal.vm (server/tomcat/webapps/mytheme-theme/templates)测试,如果我可以在文件上写入并在浏览器上查看它.我尝试提出测试评论" "只是为了查看我是否可以在文件上写入.因此,我刷新了文件,希望我能看到我添加的评论,但是我们没有.因此,我继续令人耳目一新(CTRL+R),并查看源代码将近二十分钟.一段时间后,当我尝试再次查看它时,它反映在我的源代码中.因此,我认为它是由Liferay或我的浏览器缓存的. 因此,我尝试调整其中的评论添加版本(" "),希望看到更改.我在另一个浏览器上检查了它,该注释未更新或包含我添加的版本.因此,我认为Liferay负责这个问题. 这是我的 portal-ext.properties 包含的内容: auth.token.check.enabled=false # Database settings jdbc.default.jndi.name=jdb
0 2024-04-04
编程技术问答社区
在合并代码时,我在bitbucket中遇到了一些冲突错误
在git(bitbucket)中合并代码时,我得到了一个问题src/main/webapp/css/main.css(冲突) 该代码在Eclipse中很好,但是在Bitbucket视图中,其显示了在具有一些文本的代码中添加的另外2行.喜欢 >>>>>> source:95de515e0203585db3c4f1084e37ade6dcc08ed2 解决方案 备份您的更改 覆盖并更新(或还原)您的本地文件,并使用最新的文件 git 再次应用您的更改 尝试提交并推动
0 2024-03-31
编程技术问答社区
在同一个JRE中的2个应用程序,从java.awt.Desktop.isDesktopSupported()得到的结果不同。
我有一个使用java.awt.Desktop的Maven项目.我正在将其用于Google身份验证,因此我需要某种方法来打开浏览器对话框以进行Google登录和用户确认. 我要在.jar文件中导出该库,我打算将其包括在许多Liferay Portlet中,在Web-Inf/lib 中 如果我测试了独立项目,从Liferay的Tomcat JRE运行,一切正常,Desktop.isDesktopSupported()返回 true . 当portlet部署在同一tomcat 上时,称为同一库函数,Desktop.isDesktopSupported()返回 false . . 由于在这两种情况下,我都使用相同的Java环境,为什么我会得到不同的行为? 另外,如果您知道打开浏览器窗口而不是使用desktop.browse的替代方法,则可以共享. 解决方案 仍然不确定为什么它在Servlet/PortletContext中不起作用. 解决方法正在使用jav
0 2024-03-22
编程技术问答社区
在Liferay中调用login()函数时出现UserEmailAddressException
我想在我的网站上进行LinkedIn身份验证.他们的API返回所需的信息,创建帐户功能正在工作.但是,当我尝试在网站上登录时,我似乎遇到了一些问题. 我调用LoginUtil.login方法时似乎得到了UserEmailAddressException. at com.liferay.portal.service.impl.UserLocalServiceImpl.authenticate(UserLocalServiceImpl.java:2480). 它在 上失败 if (authType.equals(CompanyConstants.AUTH_TYPE_EA)) { if (!Validator.isEmailAddress(login)) { throw new UserEmailAddressException(); } } 这是我的代码: boolean rememberMe = true; String au
0 2024-03-20
编程技术问答社区
会话超时后无效的认证令牌
我已经启用了CSRF保护,并且在以下情况下引起了问题. 会话时间耗尽,用户单击一个触发需要登录用户的操作的按钮.随着会话现在过期,首先将用户带到登录页面,然后将其重定向到操作.用户要求的操作URL在登录URL中持续使用,该参数已过期p_auth参数,这会导致错误 我不想从CSRF保护中排除此操作.有没有办法定义一个默认操作,如果有过期的身份验证令牌,则可以调用?如果没有,那么有办法解决这个问题吗? 解决方案 好吧,这里的问题是Liferay存储了最后一个路径.由于最后一个路径还包括身材,因此在这里很棘手. Liferay检测到会话已经过期,并将其重定向到登录页面.新登录后,将生成新的Authtoken并与该会话相关联.现在,Liferay试图将您重定向到最后存储的Pather.在这里,旧的authtoke仍然存在.这么多分析. 可能有效的是: 创建自己的自定义postlogination.在该操作中,您检查最后一个路径是否包含authtoke.如果是这样,
2 2024-03-20
编程技术问答社区
通过CAS登录Liferay,通过Login Portlet创建账户功能
我们使用Liferay 6.1.0,OpenLDAP来存储用户,而SSO则使用CAS.我配置了Liferay将CAS用于登录.但是,仅当一个单击右上角的"登录"链接时,通过CAS登录工作.用户也可以通过登录portlet登录,但不使用CAS.首先,我认为我可以隐藏或删除登录portlet,以迫使用户通过CAS登录,但是随后我丢失了登录Portlet提供的"创建帐户"链接.我需要Liferay的创建帐户功能,因为它非常实用(例如,将新用户导出到LDAP). 我怎么能吃蛋糕去吃它? IE.提供Liferay的创建帐户链接,而不显示其余的登录portlet,而仅通过CAS登录的" force"已经注册的用户?任何帮助,将不胜感激.谢谢. 解决方案 回答我自己的问题,因为我终于弄清楚了... 我创建了一个钩子来替换JSP文件$TOMCAT/webapps/ROOT/html/portlet/login/login.jsp其中$TOMCAT是Liferay Bundle中的To
0 2024-03-20
编程技术问答社区
LAST_PATH在Liferay 7的自定义登录动作中重定向
我正在在Liferay 7中实现自定义登录 - 一个用于登录挂钩portlet的模块,一个用于ActionCommand. 我还为登录事件生成了类.问题是重定向在此类或登录钩孔的JSP上都无法使用. 这是我生命周期性的代码: @Component( immediate = true, property = { "key=login.events.post" }, service = LifecycleAction.class ) public class UserLoginPostAction implements LifecycleAction { private static final Log LOGGER = LogFactoryUtil.getLog(UserLoginActionCommand.class); @Override public void processLifecycl
0 2024-03-19
编程技术问答社区
使用一个简单的Java代码获取当前用户Liferay
我正在使用: liferay 6.0.6 jboss 5.1 和 struts2 . 我的问题是,如何使用 java 代码来获取 liferay 中的当前用户. 解决方案 在您的doview/processaction方法中确实以下是 User user = (User) request.getAttribute(WebKeys.USER); 或使用themedisplay对象.它包含其他信息,例如CompanyID,GroupId,... ThemeDisplay td =(ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY); User user = td.getUser(); 类主题播放,用户NAD WebKeys是Portal-Service.jar的一部分. 如果您只需要一些ID来识别当前用户,也可以使用 String userId = request.getRemote
2 2024-03-19
编程技术问答社区
下载已通过Liferay门户的动态数据列表上传的文件
数据列表Document字段.现在,我想允许匿名用户下载这些文件,但是当前他们只看到没有链接的文件名: 您对我该如何实现有任何建议吗? 编辑: 正如@mark建议的那样,我已经创建了模板的显示,并且在freemarker编辑器中,我选择了Display and Media字段.它在我的.ftl文件中生成了以下代码: ${languageUtil.format(locale, "download-x", "Documents and Media")} 我保存了更改并刷新页面.它给了我以下错误: Expression cu
2 2024-03-01
编程技术问答社区
不能解决导入包的问题
我有一个Liferay Portlet. 我已经使用Maven添加了一些外部库. 在IDE没有错误中,它可以识别,但是 与蚂蚁部署时,它没有说没有这样的软件包和班级 import pack.SomeClass; The import pack cannot be resolved 代码: import pack.SomeClass; public class MainPortlet extends MVCPortlet { public void doView(RenderRequest renderRequest,RenderResponse renderResponse) { SomeClass a = new SomeClass(); } } 解决方案 如果您使用的是Maven,并且已将依赖性定义为范围为系统或提供的喜欢系统或提供的> 如果您在本地上有第三方罐,并且要将它们包括在战争文件中,然后将该Jar文件安装到本地存储库中
6 2024-02-27
编程技术问答社区
如何在Teamcity构建成功后部署到AWS Elastic Beanstalk上
我想在构建成功时将Java应用程序(Liferay)部署到Beanstalk.我找不到在线上任何东西,请建议. 谢谢 解决方案 这是PHP的示例,但是您可以将其与任何其他平台(通过CLI)一起使用: upd: 这是一个更好的方法: http://docs.aws.aws.aws.aws.aws.aws.amazon.com/elastastelstalk/latest/dg/command-reference-eb.html . 只需命令行工具即可.您可以在Teamcity Build Step中运行它. 其他解决方案 我知道它很旧,但最近我做了很多挣扎,但可能会对其他人有所帮助. 1)创建一个Windows Build Agent(如果尚未创建). 2)使用远程桌面连接将您的系统与构建代理连接连接(是的,我们可以为Windows Agent做到这一点). 3)使用RDC在构建代理机中安装和配置AWS CLI. 4)在构建步骤中,首先创建构建
4 2024-01-24
编程技术问答社区
整合Alfresco和Liferay,只显示一个文件夹
我正在尝试集成露天和liferay.我已经配置了CMIS集成以下以下但是现在,我想配置该存储库以仅显示一个文件夹.我可以在"文档和媒体portlet"上设置一个启动文件夹,但是如果我尝试添加alfresco存储库的文件夹,它说没有文件夹. 这是与Alfresco存储库集成的"文档和媒体portlet"的屏幕截图 这是我尝试选择一个存储库的一个文件夹 任何帮助将不胜感激. 解决方案 最后,我弄清楚了问题所在. Alfresco的SOLR索引被破坏了.我的CMIS查询不起作用,因此使用CMI中的文件夹中的搜索文档没有重新调整结果. 我删除了solr索引,重新启动的alfresco,现在liferay毫无问题地工作
10 2024-01-22
编程技术问答社区
企业内部网 Liferay或Alfresco
我想创建一个企业Intranet,可提供员工和管理配置文件,消息传递,日历,文档管理... 的身份验证 我认为我可以使用PHP或Java CMS,此刻,我决定使用Liferay或Alfresco.问题是我真的不知道它们之间的区别以及我必须选择的东西. 解决方案 它们是完全不同的产品,可以解决不同的业务需求. liferay 是 java portal .它着重于创建能够在同一页面中集成来自不同来源和应用程序的数据的网站.使用 portlets ,您撰写了一个页面,以使用此类Mini应用程序来丰富它.它主要用于创建汇总信息并包含交互式功能的网站,例如在线聊天,博客等.它还提供文档管理作为其功能的一部分,并且有可能整合Alfresco 作为后端. alfresco 这是一个 enterprise Content Management System.它围绕文档,其生命周期和协作能力进行了围绕此类文件.随着 share ,Alfresco现在提供一个轻量级的P
10 2024-01-22
编程技术问答社区
如果字符串包含单引号或双引号,在调用CMIS查询时出错
这是我的问题:当我尝试通过CMIS查询中的查询字符串时,包含单个或双引号,它不会执行并给出以下错误: 06:19:23,306 ERROR [DispatcherPortlet:561] Could not complete request org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException: Internal Server Error at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(AbstractAtomPubService.java:506) at org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.post(AbstractA
8 2024-01-22
编程技术问答社区
整合Liferay和Alfresco
IM使用Liferay版本5.2.3和Alfresco Community Edition.我想将Alfresco与Liferay集成.我想将alfresco展示为Liferay中的港口. 有人可以告诉我怎么做吗? 谢谢 解决方案 Liferay社区网站上有几个良好的旅行链接. 最常推荐的是这个... 这个描述了一个更基本的设置: 其他解决方案 由于上个月CMI被批准为标准,因此实现此目的的新最佳方法可能是通过CMIS进行的,如在这里. 其他解决方案 我使用了此: http://www.liferay.com/it/web/navin.agarwal11/blog/blog/-/blogs/integration-with-with-with-alfresco-4-x-and-liferay-6-1 即使使用Alfresco 5 ,此解决方案仍然有效
4 2024-01-22
编程技术问答社区
在portlet配置jsp页面中Ajax不起作用(liferay 6.2)。
在 mvcportlet(Liferay 6.2)上工作. 是否有任何理由在我的portlet的常规JSP上使用此AJAX调用,但在Portlet的配置页面上不起作用(当您单击右上角,然后是配置和选项时打开的JSP). 在这种情况下,正确显示portletURL(警报),JS返回成功,但控制器从未收到过客户端请求. 这是Ajax调用: $.ajax({ url: portletURL, type: 'POST', dataType: 'text', cache: false, data: { test: test }, success: function(data) { alert('success ajax'); }, error: function(http, message, exc) { alert('error ajax'); }
8 2024-01-21
编程技术问答社区
在liferay portlets上使用AJAX
我试图将AJAX请求发送给Portlet,而一半则可以.我向您展示我的代码,并在解释更好之后: jQuery ajax: jQuery("#operation").click(function() { var url = ''; var operators = jQuery('#result').html(); jQuery.ajax({ url:url, dataType: "json", data:{operators:operators}, success: function(data) { jQuery('#result').html(data.result); } });
6 2024-01-21
编程技术问答社区