- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我在我的 liferay 门户 6 中使用自定义 porltet。我有一些我想在我的 portlet 类中使用的全局变量,因此我在 portlet.xml 文件中编写了该变量,如下所示。
<init-param>
<name>Host</name>
<value>smtp.mail.yahoo.com</value>
</init-param>
<init-param>
<name>Port</name>
<value>465</value>
</init-param>
在我的 portlet 操作类中完美运行的功能
publicList<String> ReadSmtpDataForMailNotification() {
List<String> ValuesListObj = new ArrayList<String>();
ValuesListObj.add(this.getInitParameter("Host"));
ValuesListObj.add(this.getInitParameter("Port"));
return ValuesListObj;
}
现在的问题是,当我使用 portlet 操作类执行函数时,它的工作完美,但是当我想在我的 portlet 类之外访问这个变量时......例如:- 在我的本地服务实现类中,我无法访问该变量并且 come 的值始终为 null..所以如果有人可以建议我如何在其他 portlet 类中获取 initparam 的值。
@Advaita Gosvami
在portlet.properties文件中写了my.custom.host=liferay.css.com
当我尝试使用以下内容获取值时
System.out.println("Property value : - " + PropsUtil.get("my.custom.host"));
它给了我空值..
最佳答案
如果您想在运行时获取 portlet 的初始化参数,您可以使用 com.liferay.portal.service.PortletLocalServiceUtil
来获取您的 portlet。
然后您将获得 com.liferay.portal.model.Portlet
的实例。
这是一个非常方便的对象,因为它为您提供了调用便捷方法的可能性:
public java.util.Map<java.lang.String, java.lang.String> getInitParams();
在 portlet 中,在您的 liferay 服务器上运行的 servlet,在服务器启动时运行的 Hook , quartz 作业,服务......
可以调用下面的代码来获取portlet的init-param map
import com.liferay.portal.model.Portlet;
import com.liferay.portal.service.PortletLocalServiceUtil;
import java.lang.String;
import java.util.Map;
...
/* Determine what is your portlet's id, you can go as follows or find it after placing one in a page and check it's id with a tool like firebug */
String myPortletId = "myPortletName_WAR_myPortletWar";
/* Get the actual portlet model object with the appropriate service call */
Portlet myPortletObject PortletLocalServiceUtil.getPortletById(myPortletId);
/* Get the map of init-params from the portlet model object */
Map<String,String> initParamMap = myPortletObject.getInitParams();
/* You can now iterate on your map as on any other */
for (String currentParamKey : initParamMap.keySet()) {
String currentParamValue = initParamMap.get(currentParamKey);
/* do stuff */
}
在 Liferay 中,需要注册一个 portlet 才能使用。
部署时,门户注册它,注册它的 init-params
和一堆其他信息。
最幸运的是 Liferay 将所有这些数据存储在它的数据库中。
就像 Liferay 存储在数据库中的几乎所有信息一样,这些信息可以通过 LiferayService 访问。
这些服务附带了一堆实用方法。
在我的代码示例中,由于通过 portletId
搜索 portlet 的方法,我得到了 portlet 对象。此 portletId
不是表 Portlet
的数据库主键。
因此,Liferay 自己负责关联 portletId
(实际上是名称),而不是强制询问主键,它是一个无意义的数字 long
.
您可以使用其他方法来获取 portlet 的对象,因为 PortletLocalServiceUtil 有许多可用的查找器。
我强烈建议您在任何提供“大纲”的 IDE 中检查文件 $LIFERAY_PORTAL_SRC/portal-service/src/com/liferay/portal/service/PortletLocalServiceUtil.java
查看以更好地了解它的所有可能性。
希望这有帮助;)
关于xml - 如何在 liferay 中获取 portlet.xml 的初始化参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14618924/
假设我正在向 Liferay Portal 内的不同 portlet 添加数据。所有这些数据都保存在哪里? 最佳答案 Liferay 附带的大多数开箱即用的 portlet,如博客、论坛、Wiki、W
我需要的是: Administrator-level-1(可以编辑所有2级和3级的简单用户和管理员) Administrator-level-2(可以编辑所有普通用户和3级管理员) 管理员级别 3(甚
我在 liferay 工作。我们在我们的项目中使用一个模块来创建 liferay 主题。我使用命令 ant -Ddeploy.war=true 将它部署在服务器中。 war 文件在 liferay 部
我需要一个简单的 Liferay Web 表单扩展,以增强 Liferay 7 Web 表单中填充的数据的文件附件。 还需要将此文件作为附件随电子邮件发送给注册用户。 我知道如何在 liferay 6
When Local Live staging is enabled for a site, a clone of the site is created containing copies of a
我在 liferay 工作。我们在我们的项目中使用一个模块来创建 liferay 主题。我使用命令 ant -Ddeploy.war=true 将它部署在服务器中。 war 文件在 liferay 部
插件的代码如何访问在其自己的 liferay-plugin-package.properties 文件中设置的属性? 最佳答案 您可以使用 DeployManagerUtil 首先导入以下内容: im
Liferay 7 GA1 刚刚发布,但文档尚未完成。如何将默认的 liferay Logo 更改为公司 Logo ?当然,我希望每个网站都有一个自定义 Logo 。 最佳答案 进入控制面板->配置-
我一直在阅读有关从 liferay 6 迁移到 liferay 7 的 liferay 文档 ( https://dev.liferay.com/develop/tutorials/-/knowled
我想问一个关于是否应该迁移到 Liferay 6.2 的问题。 我和我的团队从 4 个月开始就在使用 Liferay 6.1(CE 版)开发的一个相当大的门户网站上工作,现在,由于项目发布日期仍然提前
我是 liferay 的新手,我几乎确信这非常简单:使用速度标记,我希望能够生成指向 Liferay 网站内页面的链接,并将它们嵌入到不同页面上的 portlet 中。 我对如何完成它有一个模糊的想法
我想知道为用户分配的站点角色名称列表。所以我尝试如下, List userRolesList = RoleLocalServiceUtil.getUserRoles(userid);
同样,我们是否有任何可能的解决方案来避免使用扩展方法/自定义实现/ Hook /插件/扩展将用户信息填充到 liferay 数据库中以进行身份验证? 问候维沙尔 G 最佳答案 无法避免在 Life
只是想知道任何一个与 liferay 集成的 wicket 。 在启用 ajax 的情况下对 wicket portlet 进行编码有多难? 有人在生产中使用 wicket portlet 吗? 最佳
我们在liferay 中有一个叫做嵌套portlet 的东西。我想通过代码动态添加这个 portlet。有谁知道用于添加嵌套 portlet 并在其中添加其他 portlet 的代码? 谢谢 !!!
如何以编程方式获取 Liferay 默认语言或区域设置? 最佳答案 检查 com.liferay.portal.kernel.util.LocaleUtil 类方法: LocaleUtil.getDe
是否可以在 service.xml 文件中不配置任何数据库表的情况下创建 liferay 服务构建器。 实际上这里的目的是使用 liferay 服务构建器创建一个服务层。并且在这个服务层没有直接与数据
众所周知,Liferay 具有创建用户的内置功能。但我希望有一个创建用户的工作流程,其中涉及批准过程。我的意思是,用户将由管理员创建,但它应该由另一个授权人批准,然后只有用户帐户将处于事件状态。 有什
我正在使用liferay6.1 和Java SDK 开发liferay portlet。 当用户登录并单击控制面板时,他们可以看到各种选项。有没有办法隐藏这个选项? 我还是新手,但我认为您可以将它从
我发现了如何使用journalContentUtil.getContent方法将Web Content嵌入Liferay 6.2主题中。我的问题是在Liferay 7中如何做同样的事情? 最佳答案 我
我是一名优秀的程序员,十分优秀!