当前位置: 首页 > 知识库问答 >
问题:

Liferay:是否可以通过portlet定义初始化依赖项?

朱炳
2023-03-14

我有两个portlet:Portlet-A和Portlet-B。

Portlet-A进行一些数据初始化并将其存储在共享范围内。

Portlet-B在初始化期间需要来自共享范围的数据(来自Portlet-A)。

然而,我需要定义Portlet-A必须在Portlet-B之前启动(呈现)。

Liferay是否可以定义一些初始化顺序,或者类似于portlet依赖关系的东西?

共有2个答案

巫马欣嘉
2023-03-14

据我所知,Liferay对portlet进行延迟加载,因此您无法保证portlet初始化和portlet调用的顺序。

当您在一个页面上使用多个Portlet时,您面临的问题是常见的。

在这里,常见的解决方法是,setter portlet(在您的示例中是portlet A)应该在processAction()方法中设置属性,而getter portlet(portlet B)应该从doView()中获取该属性。

原因是,您无法保证doView()的顺序,但是,如果您正在启动actionURL,那么processAction()将始终在doView()之前被调用

因此,该属性将在渲染UI时可用于所有其他portlet。Guranteed!

谭思博
2023-03-14

如果我理解正确,您需要在同一页面上呈现Portlet-A,然后呈现Portlet-B。

然后你可以在liferay-portlet.xml中定义这个:

有关DTD中渲染权重的更多说明

希望这有帮助。

 类似资料:
  • 问题内容: 是否可以在python中使用全1来初始化切片? 蟒蛇: 高朗 有可能做得更好吗? 问题答案: 是的,但是您必须使用其他语法。 它被称为“复合文字” 另外,如果有理由进行迭代(如计算基于循环变量的值等),则可以使用关键字而不是旧式,因为i等于i,小于i ++循环。

  • 我们正试图通过Jenkins将生成的war文件自动部署到web服务器。在tomcat服务器上使用Deploy plugin,我可以为普通war文件实现同样的功能。 对于Liferay portlet war文件,我不能使用我们将war文件放入Liferay中的deploy文件夹,然后将其复制到tomcat webapps文件夹的插件。 我看到的另一种方法是在pom.xml

  • Swift 5.x String初始化、定义 1. 字面量初始化字符串 1.1 单行字面量字符串 let str = "some string" 1.2 字面量初始化多行字符串 let str = """ The white Rabbit put on his spectacles. "Where shell I begin, please your Majesty?" he asked. "

  • 来自以下来源: https://www.amazon.com/java-complete-reference-herbert-schildt/dp/0071808558 第8章:在继承中使用final 对于私有、静态、最终方法,应该使用早期(静态)方法绑定 所以正如我所认为的,这两个方法应该有不同的绑定类型。检查字节码: 在这里我看到了两个有害的指示。那么有什么方法可以确定类字节码使用了哪种绑定呢

  • 尝试启动服务时的异常跟踪: 2016-07-03 15:08:34.596信息35332---

  • 问题内容: 哪种方法检查变量是否已初始化是更好/正确的方法?(假设变量可以容纳任何内容(字符串,整数,对象,函数等)) 要么 要么 问题答案: 该运营商将检查变量真的不确定。 该运营商,不同于其他运营商,不会抛出 的ReferenceError 与未声明的变量使用时例外。 但是,请注意将返回。我们必须小心避免将变量初始化为的错误。为了安全起见,我们可以改用以下方法: