繁体   English   中英

在portal_normal.vm中调用Java方法

[英]Calling Java methods in portal_normal.vm

我在Liferay中实现了一个主题。 我在控制面板上有一个表单Portlet,用户可以填写。 根据portlet中插入的值,主题主页应以不同的方式显示。

我当时在想使用类似的方法,但是不起作用:

#set($typeLong = $portal.getClass().forName('java.lang.Long').getField('TYPE').staticValue)
#set($personalOptions = $portal.getClass().forName("com.mypackage.utils.Configuration").getMethod("getStrings", $typeLong).invoke(null,$scopeGroupId))

我的“ getStrings”是在“ Configuration”类中定义的方法,其中输入long并返回String []数组。

有什么建议吗?

不要沿着那条路走。 在某些情况下它可能会起作用,但无非是疯狂的破解。 在某些情况下会破裂。

请记住,您的主题可能与Portlet位于不同的类加载器中-因此com.mypackage.utils.Configuration类甚至可能不可用。

恕我直言,显示个人内容是一种业务逻辑,最好封装在portlet中-您可以将portlet嵌入主题中,以便将它们自动显示在每个页面上。 该portlet也可以实现为在不需要时不显示任何内容。 将精美的CSS添加到主题中(正是针对此Portlet),使其显得特别。 例如,像Liferay的dockbar或chat portlet:两者都是带有精美CSS的portlet:它们看起来不像portlet,但实际上确实如此。 并且它们会自动嵌入每个页面中。

单独的问题在portlet中具有实际的内容和个人数据。 您未来的维护者将感谢您(即使只有未来的您会感谢您)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM